lodash源码阅读3-----------pick

本文详细探讨了lodash库中的pick方法,通过实例解析其工作原理。讲解了basePick、basePickBy、hasIn等核心方法,以及在类型转化中String、toString方法的区别,特别是模板字符串对0和-0的处理。最后提到了baseSet方法在设置属性过程中的作用。
摘要由CSDN通过智能技术生成

用法

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值