lodash源码分析每日一练 - 数组 - fromPairs
2023-12-26 06:08:55
今日分享:
每一步都是曼妙的风景~
_.fromPairs(pairs)
使用:
这个方法返回一个由键值对pairs构成的对象。
使用示例:
_.fromPairs([['fred', 30], ['barney', 40]]);
// => { 'fred': 30, 'barney': 40 }
尝试手写:
①返回新对象 ②入参为由键值对构成的数组
let frompairs_arr = [['fred', 30], ['barney', 40]];
function my_fromPairs (pairs) {
let obj = {};
if((pairs instanceof Array) && pairs.length>0) {
for(let i = 0; i < pairs.length; i++) {
obj[pairs[i][0]] = pairs[i][1]
}
}
return obj;
}
console.log(my_fromPairs(frompairs_arr));// { 'fred': 30, 'barney': 40 }
源码方案:
function fromPairs(pairs) {
var index = -1,
length = pairs == null ? 0 : pairs.length,
result = {};
while (++index < length) {
var pair = pairs[index];
result[pair[0]] = pair[1];
}
return result;
}
备注
为什么他都用 while
而不是for
?
语法糖只便于开发者理解而机器需要编译还原为简单的基础语言才能使用。可以说上我看的这个node_modules
中的源码也是反编译后的结果而不是lodash源码。所以他的所有“源码”都是反编译后的内容。
其他
与之对应还有一个 _.toPairs(object)
,用于创建一个object对象自身可枚举属性的键值对数组。不放这里了,放后面object整理的时候吧。
文章来源:https://blog.csdn.net/pong_dong/article/details/135207240
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!