lodash
最近项目推行Lodash使用,看了几遍官方文档,发现很多方法都可以在Es6找到,看了一些源码发现也是原型调用,加上了判断,那么下面就是我总结的项目中可以使用到的lodash方法。
Array
compact方法
官方:创建一个新数组,包含原数组中所有的非假值元素。例如
false,null,0,"",undefined, 和NaN都是被认为是“假值”。也就是可以过滤假值。_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
求交集文档只也给了许多的方法,有intersection、intersectionBy、intersectionWith那么它们的区别有什么一样呢?
intersection方法
官方:创建唯一值的数组,这个数组包含所有给定数组都包含的元素,使用
SameValueZero进行相等性比较。(注:可以理解为给定数组的交集)
_.intersection([2, 1], [4, 2], [1, 2]); // => [2]
很明显这个方法只能用于纯数组,支持多个数组求并集。
intersectionBy比intersection多了一个参数iteratee,可以用这个参数来判断交集,并且iteratee可以是(Array|Function|Object|string)类型,适用于集合。
例如我想获取到no字段的交集,只需要在方法最后加上'no'。如果业务需要多个字段的交集,就是传一个数组['no','age'],以上还是不满足业务,那么我们可以直接传入一个回调函数,进行处理。
_.intersectionBy( [
{ no: 1, name: 'John', age: 25, sex: 'Male', dept: 'IT' },
{ no: 2, name: 'Alice', age: 30, sex: 'Female', dept: 'Sales' },
{ no: 3, name: 'Michael', age: 35, sex: 'Male', dept: 'HR' },
{ no: 4, name: 'Emily', age: 28, sex: 'Female', dept: 'Finance' },
{ no: 5, name: 'David', age: 32, sex: 'Male', dept: 'Marketing' }
],
[ { no: 2, name: 'Alice', age: 30, sex: 'Female', dept: 'Sales' }, { no: 3, name: 'Michael', age: 35, sex: 'Male', dept: 'HR' }, { no: 4, name: 'Emily', age: 28, sex: 'Female', dept: 'Finance' }, { no: 5, name: 'David', age: 32, sex: 'Male', dept: 'Marketing' }, { no: 6, name: 'Sarah', age: 27, sex: 'Female', dept: 'Operations' } ])