今日分享:
每一步都是曼妙的风景~
_.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整理的时候吧。