本系列使用 lodash 4.17.4版本数组
此方法没有对其余方法进行引用源码分析
/**
* The inverse of `toPairs`is method returns an object composed
* from key-value `pairs`.
*
* @since 4.0.0
* @category Array
* @param {Array} pairs The key-value pairs.
* @returns {Object} Returns the new object.
* @example
*
* fromPairs([['a', 1], ['b', 2]])
* // => { 'a': 1, 'b': 2 }
*/
function fromPairs(pairs) {
const result = {}
if (pairs == null) {
return result
}
for (const pair of pairs) {
result[pair[0]] = pair[1]
}
return result
}
export default fromPairs
复制代码
该方法接受一个将被转换为对象的二维数组。post
该方法返回一个对象。spa
1.该方法会首先定义一个result
空对象。code
2.该方法会判断传入的参数是否为空数组,若为空数组则会直接将result
空对象返回给调用该方法的地方;若不为空继续下一步。对象
3.该方法会对传入的二维数组进行遍历操做,在遍历中,将二维数组下的每一个一维数组的第一项转换为字符串做为对象的属性,第二项做为对象的属性值,组成一对键值对赋给以前定义的result
对象。遍历操做结束后,将result
对象返回给该方法调用的地方。rem
注: 该方法没有对传入的参数进行类型判断。字符串
null
和undefined
时会被视为空数组或空变量而直接将空对象result
返回给调用的地方;undefine: undefined
键值对赋值给对象;undefined
做为属性值赋值给对象;注: 当传入的二维数组下的一维数组值不足两个,不足的会以undefined
代替,超过两个的会被无视。get
注: 当传入的二维数组下的一维数组值不足两项时,不足的项会以undefined
代替,超过两项的项会被无视。源码
fromPairs([[3, 1], [6, 5]]);
--> {'3': 1, '6': 5}
fromPairs([[5, 3, 6], [2]])
--> {2: undefined, 5: 3}
fromPairs([[[5, 3, 6], [2]], [[2, 7], [1, 8]]])
--> {5,3,6: Array(1), 2,7: Array(2)}
fromPairs("DrMoon");
--> {D: undefined, r: undefined, M: undefined, o: undefined, n: undefined}
fromPairs(5);
--> Uncaught TypeError: pairs is not iterable
fromPairs(true);
--> Uncaught TypeError: pairs is not iterable
fromPairs(null);
--> null
fromPairs(undefined);
--> undefined
复制代码
该方法会将传入的二维数组转换为一个对象,二维数组下每一个一维数组的前两项组成一对键值对做为对象的属性与属性值。
每日源码分析 - lodash(debounce.js和throttle.js)
本文章来源于午安煎饼计划Web组 - 残阳