用法
pick方法类似于数组的filter方法,它可以从一个对象中,提取出对应属性的值,并组合成一个新的对象返回。它接受两个参数,被提取属性的对象,属性名称数组。
* const object = {
'a': 1, 'b': '2', 'c': 3 }
*
* pick(object, ['a', 'c'])
* // => { 'a': 1, 'c': 3 }
解析
由于方法的调用栈很长,所以我们一个一个来阅读。
首先看看pick方法,内容很简单,传入空对象就返回一个{ },接下来我们看看basePick方法。
function pick(object, ...paths) {
return object == null ? {
} : basePick(object, paths);
}
basePick方法调用了,basePickBy方法,并且多传入了一个回调函数,那我们先看看这个hasIn方法
function basePick(object, paths) {
return basePickBy(object, paths, (value, path) => hasIn(object, path));
}
hasIn方法的作用就是通过in关键字来判断这个key是不是object的属性,不过要注意,数组和对象都可以使用in关键字。
格式:变量 in 对象
- 当“对象”为数组时,“变量”指的是数组的“索引”;
- 当“对象”为对象是,“变量”指的是对象的“属性”。
f