lodash源码阅读
文章平均质量分 68
osbron_J
我是一个小菜鸟,啦啦啦
展开
-
lodash源码阅读5-----------uniq
用法 数组去重 uniq([2, 1, 2]) // => [2, 1] 解析 首先来看它的函数入口,没什么说的,就是判断数组是否有意义,有的话调用baseUniq方法 function uniq(array) { return (array != null && array.length) ? baseUniq(array) : [] } 接下来看看,baseUniq方法 大概逻辑就是,通过遍历数组,将新数组中没有的元素放入新的数组,逻辑不难,所以直接注释在原创 2021-03-24 17:27:48 · 158 阅读 · 0 评论 -
lodash源码阅读4-----------intersection
用法 intersection是一个用来求数组交集的方法,它可以接收多个数组,还能接受类数组的对象。 intersection([2, 1], [2, 3]) // => [2] 解析 首先来看它的函数入口,主要是通过castArrayLikeObject方法来过滤一些非法传入,这里比较mapped[0] === arrays[0]是为了确认传入的第一个参数是合法的,如果不合法那么交集必定为空集就不用再进行后面的遍历。 然后我们来看看castArrayLikeObject方法。 //这里通过剩余原创 2021-03-21 22:30:03 · 329 阅读 · 0 评论 -
lodash源码阅读3-----------pick
用法 pick方法类似于数组的filter方法,它可以从一个对象中,提取出对应属性的值,并组合成一个新的对象返回。它接受两个参数,被提取属性的对象,属性名称数组。 * const object = { 'a': 1, 'b': '2', 'c': 3 } * * pick(object, ['a', 'c']) * // => { 'a': 1, 'c': 3 } 解析 由于方法的调用栈很长,所以我们一个一个来阅读。 首先看看pick方法,内容很简单,传入空对象就返回一个{ },接下来我们看原创 2021-03-12 11:33:10 · 485 阅读 · 0 评论 -
lodash源码阅读2-----------slice
写在前面 毕业在找工作的时候,有遇到过一道面试题 : 请实现数组的slice方法 当时觉得,这个方法实现起来不容易吗,于是我交了下面的答卷 function mySlice(arr,start,end){ var newArr = []; for(var i= start ; i< end ; i ++){ newArr.push(arr[i]); } return newArr;原创 2021-03-04 15:51:40 · 220 阅读 · 1 评论 -
lodash源码阅读1-----------reduce
1.源码 function reduce(collection, iteratee, accumulator) { const func = Array.isArray(collection) ? arrayReduce : baseReduce const initAccum = arguments.length < 3 return func(collection, iteratee, accumulator, initAccum, baseEach) } function arra原创 2021-02-26 15:21:37 · 434 阅读 · 2 评论