目录
1._.slice(array, [start=0], [end=array.length])——裁剪数组array,从 start 位置开始到end结束,但不包括 end 本身的位置。
2._.sortedIndex(array, value)——使用二进制的方式检索来决定 value值应该插入到数组中尽可能小的索引位置,以保证array的排序。
4. _.sortedIndexOf(array, value)——这个方法类似 _.indexOf,除了它是在已经排序的数组array上执行二进制检索。
5._.sortedLastIndex(array, value)——此方法类似于_.sortedIndex,除了 它返回 value值 在 array 中尽可能大的索引位置(index)。
7._.sortedLastIndexOf(array, value)——类似 _.lastIndexOf,除了它是在已经排序的数组array上执行二进制检索。
8._.sortedUniq(array)——个方法类似 _.uniq,除了它会优化排序数组,返回一个新的不重复的数组。
9._.sortedUniqBy(array, [iteratee])——这个方法类似 _.uniqBy,除了它会优化排序数组
10._.tail(array)——获取除了array数组第一个元素以外的全部元素。
11._.take(array, [n=1])——从array数组的起始元素开始提取n个元素。
12._.takeRight(array, [n=1])——从array数组的最后一个元素开始提取n个元素。
13._.takeRightWhile(array, [predicate=_.identity])——从array数组的最后一个元素开始提取元素,直到 predicate 返回假值。
14._.takeWhile(array, [predicate=_.identity])——从array数组的起始元素开始提取元素,,直到 predicate 返回假值。
18._.uniq(array)——创建一个去重后的array数组副本。只有第一次出现的元素才会被保留。
21._.zip([arrays])——创建一个分组元素的数组,数组的第一个元素包含所有给定数组的第一个元素,数组的第二个元素包含所有给定数组的第二个元素,以此类推。
24._.zipObjectDeep([props=[]], [values=[]])——这个方法类似 _.zipObject,除了它支持属性路径。
27._.without(array, [values])——创建一个剔除所有给定值的新数组,剔除值的时候,使用SameValueZero做相等比较。
28._.xor([arrays])——创建一个给定数组唯一值的数组,使用symmetric difference做等值比较。返回值的顺序取决于他们数组的出现顺序。
1._.slice(array, [start=0], [end=array.length])
——裁剪数组array
,从 start
位置开始到end
结束,但不包括 end
本身的位置。
let array = [1, 2, 3, 4, 5, 6];
console.log(_.slice(array, 3, 4)); //[ 4 ]
console.log(array); //[ 1, 2, 3, 4, 5, 6 ]
- 不改变原数组。
2._.sortedIndex(array, value)——
使用二进制的方式检索来决定 value
值应该插入到数组中尽可能小的索引位置,以保证array
的排序。
let array = [1, 2, 4];
console.log(_.sortedIndex(array, 3)); //2
console.log(_.sortedIndex(array, 2)); //1
console.log(array); //[ 1, 2, 4 ]
3._.sortedIndexBy(array, value, [iteratee=_.identity])——
这个方法类似 _.sortedIndex
,除了它接受一个 iteratee
(迭代函数),调用每一个数组(array
)元素,返回结果和value
值比较来计算排序。iteratee 会传入一个参数:(value)。
let array = [1, 2, 3, 4, 6, 8];
console.log(_.sortedIndexBy(array, 5, item => item > 1));//1
console.log(_.sortedIndexBy(array, 5, item => item > 2));//2
console.log(_.sortedIndexBy(array, 5, item => item > 3));//3
4. _.sortedIndexOf(array, value)——
这个方法类似 _.indexOf
,除了它是在已经排序的数组array
上执行二进制检索。
console.log(_.sortedIndexOf([2, 1, 4, 3], 1)); //-1
console.log(_.sortedIndexOf([1, 2, 3, 4], 1)); //0
- 不改变原数组。
- array的数组一定是排序过后的,否则结果都是为-1.
5._.sortedLastIndex(array, value)
——此方法类似于_.sortedIndex
,除了 它返回 value
值 在 array
中尽可能大的索引位置(index)。
let array = [1, 2, 2, 2, 3, 4];
console.log(_.sortedLastIndex(array, 2)); //4
6._.sortedLastIndexBy(array, value, [iteratee=_.identity])
——类似 _.sortedLastIndex
,除了它接受一个 iteratee
(迭代函数),调用每一个数组(array
)元素,返回结果和value
值比较来计算排序。iteratee 会传入一个参数:(value)。
let array = [1, 2, 3, 3, 3, 4, 5];
console.log(_.sortedIndexBy(array, 3, item => item > 1)); //1
console.log(_.sortedIndexBy(array, 3, item => item > 2)); //2
console.log(_.sortedIndexBy(array, 3, item => item > 3)); //0
7._.sortedLastIndexOf(array, value)——
类似 _.lastIndexOf
,除了它是在已经排序的数组array
上执行二进制检索。
let array = [1, 2, 3, 3, 3, 4, 5];
console.log(_.sortedLastIndexOf(array, 3)); //4
8._.sortedUniq(array)
——个方法类似 _.uniq
,除了它会优化排序数组,返回一个新的不重复的数组。
let array = [1, 3, 1, 2, 4, 3, 5];
console.log(_.sortedUniq(array)); // [1,3,1,2,4,3,5]
console.log(array); //[1, 3, 1, 2, 4, 3, 5]
let array1 = [1, 1, 2, 2, 3, 4, 5];
console.log(_.sortedUniq(array1)); //[ 1, 2, 3, 4, 5 ]
console.log(array1); //[1, 1, 2, 2, 3, 4, 5]
- 不改变原数组。
- 数组一定是排序的才有效。
9._.sortedUniqBy(array, [iteratee])
——这个方法类似 _.uniqBy
,除了它会优化排序数组
console.log(_.sortedUniqBy([1.2, 2.1, 2.9, 3.7, 3.3, 4, 5], Math.floor));
//[ 1.2, 2.1, 3.7, 4, 5 ]
10._.tail(array)——
获取除了array
数组第一个元素以外的全部元素。
let array = [1, 2, 3, 4];
console.log(_.tail(array)); //[ 2, 3, 4 ]
console.log(array); //[1, 2, 3, 4]
11._.take(array, [n=1])——
从array
数组的起始元素开始提取n
个元素。
let array = [1, 2, 3, 4, 5, 6, 7];
console.log(_.take(array)); //[ 1 ]
console.log(_.take(array, 2)); //[ 1, 2 ]
console.log(_.take(array, 0)); //[]
console.log(_.take(array, 9)); //[1, 2, 3, 4, 5, 6, 7]
12._.takeRight(array, [n=1])——
从array
数组的最后一个元素开始提取n
个元素。
let array = [1, 2, 3, 4, 5, 6];
console.log(_.takeRight(array)); //[ 6 ]
console.log(_.takeRight(array, 2)); //[ 5, 6 ]
console.log(_.takeRight(array, 0)); //[]
console.log(_.takeRight(array, 9)); //[ 1, 2, 3, 4, 5, 6 ]
13._.takeRightWhile(array, [predicate=_.identity])——
从array
数组的最后一个元素开始提取元素,直到 predicate
返回假值。
let array = [{"name":"mandy"},{"age":18} ];
console.log(_.takeRightWhile(array, item => item.age >10)); //[ { age: 18 } ]
console.log(_.takeRightWhile(array, item => item.age > 19)); //[]
14._.takeWhile(array, [predicate=_.identity])——
从array
数组的起始元素开始提取元素,,直到 predicate
返回假值。
let array = [{ "name": "mandy", "age": 18 }, { "name": "chen", "age": 16 }];
console.log(_.takeWhile(array, item => item.age > 16)); //[ { name: 'mandy', age: 18 }
15._.union([arrays])——
创建一个按顺序排列的唯一值的数组。所有给定数组的元素值使用SameValueZero
做等值比较。(注: arrays
(数组)的并集,按顺序返回,返回数组的元素是唯一的)
console.log(_.union([3, 3, 1, 4], [2, 5, 5, 6])); //[ 3, 1, 4, 2, 5, 6 ]
16._.unionBy([arrays], [iteratee=_.identity])——
这个方法类似 _.union
,除了它接受一个 iteratee
(迭代函数),调用每一个数组(array
)的每个元素以产生唯一性计算的标准。iteratee 会传入一个参数:(value)。
console.log(_.unionBy([2.1, 1.4, 5.8], [3.1, 1.3, 5.2, 7.1], Math.floor));
//[ 2.1, 1.4, 5.8, 3.1, 7.1 ]
17._.unionWith([arrays], [comparator])——
这个方法类似 _.union
, 除了它接受一个 comparator
调用比较arrays
数组的每一个元素。 comparator 调用时会传入2个参数: (arrVal, othVal)。
console.log(_.unionWith([1, 3, 2], [4, 5, 3, 2], _.isEqual)); //[ 1, 3, 2, 4, 5 ]
18._.uniq(array)——
创建一个去重后的array
数组副本。只有第一次出现的元素才会被保留。
console.log(_.uniq([1, 1, 4, 3, 5, 1, 3, 4])); //[ 1, 4, 3, 5 ]
19._.uniqBy(array, [iteratee=_.identity])——
这个方法类似 _.uniq
,除了它接受一个 iteratee
(迭代函数),调用每一个数组(array
)的每个元素以产生唯一性计算的标准。iteratee 调用时会传入一个参数:(value)。
console.log(_.unionBy([2.1, 2.7, 4.2, 4.7], Math.floor)); //[ 2.1, 4.2 ]
20._.uniqWith(array, [comparator])——
这个方法类似 _.uniq
, 除了它接受一个 comparator
调用比较arrays
数组的每一个元素。 comparator 调用时会传入2个参数: (arrVal, othVal)。
console.log(_.unionWith([2, 3, 4], [4, 3, 5, 6], _.isEqual)); //[ 2, 3, 4, 5, 6 ]
21._.zip([arrays])——
创建一个分组元素的数组,数组的第一个元素包含所有给定数组的第一个元素,数组的第二个元素包含所有给定数组的第二个元素,以此类推。
console.log(_.zip(["mandy", "chen"], [16, 18], [666, 999]));
//[ [ 'mandy', 16, 666 ], [ 'chen', 18, 999 ] ]
22._.unzip(array)——
这个方法类似于_.zip
,除了它接收分组元素的数组,并且创建一个数组,分组元素到打包前的结构。(:返回数组的第一个元素包含所有的输入数组的第一元素,第一个元素包含了所有的输入数组的第二元素,依此类推。)
console.log(_.unzip([[ 'mandy', 16, 666 ], [ 'chen', 18, 999 ]]));
//[ [ 'mandy', 'chen' ], [ 16, 18 ], [ 666, 999 ] ]
23._.zipObject([props=[]], [values=[]])——
这个方法类似 _.fromPairs
,除了它接受2个数组,第一个数组中的值作为属性标识符(属性名),第二个数组中的值作为相应的属性值。
console.log(_.zipObject(["name", "age"], ["mandy", 18]));
//{ name: 'mandy', age: 18 }
24._.zipObjectDeep([props=[]], [values=[]])——
这个方法类似 _.zipObject
,除了它支持属性路径。
console.log(_.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]));
// { a: { b: [ [Object], [Object] ] } }
25._.zipWith([arrays], [iteratee=_.identity])——
这个方法类似于_.zip
,不同之处在于它接受一个 iteratee
(迭代函数),来 指定分组的值应该如何被组合。 该iteratee调用每个组的元素: (...group).
console.log(_.zipWith([1, 2, 3], [4, 5, 6], [7, 8, 9], (a, b, c) => a + b + c));
//[ 12, 15, 18 ]
26._.unzipWith(array, [iteratee=_.identity])——
此方法类似于_.unzip
,除了它接受一个iteratee
指定重组值应该如何被组合。iteratee 调用时会传入每个分组的值: (...group)。
console.log(_.unzipWith([[1, 2], [10, 20]], _.add)); //[ 11, 22 ]
27._.without(array, [values])——
创建一个剔除所有给定值的新数组,剔除值的时候,使用SameValueZero
做相等比较。
let array=[1, 2, 3, 4, 2, 3, 1, 5];
console.log(_.without(array, 1, 2)); //[ 3, 4, 3, 5 ]
console.log(array); //[1, 2, 3, 4, 2, 3, 1, 5]
不改变原数组
28._.xor([arrays])
——创建一个给定数组唯一值的数组,使用symmetric difference做等值比较。返回值的顺序取决于他们数组的出现顺序。
console.log(_.xor([4, 3, 2], [8, 2, 4])); //[ 3, 8 ]
29._.xorBy([arrays], [iteratee=_.identity])——
这个方法类似 _.xor
,除了它接受 iteratee
(迭代器),这个迭代器 调用每一个 arrays
(数组)的每一个值,以生成比较的新值。iteratee 调用一个参数: (value).
console.log(_.xorBy([2.4, 4.3, 1.3], [2.7, 6.3, 1, 9], Math.floor));
//[ 4.3, 6.3, 9 ]
30._.xorWith([arrays], [comparator])——
该方法是像 _.xor
,除了它接受一个 comparator
,以调用比较数组的元素。 comparator 调用2个参数:(arrVal, othVal).
console.log(_.xorWith([1, 4, 3, 2], [1, 3, 4, 7], _.isEqual)); //[ 2, 7 ]
注意事项
- by 根据方法或属性
- with lodash方法比如isEqual
- at 和index相关
- chunk 分块
- compact 去除假值元素
- difference 和其他数组不同的值
- flattendeep 全部拍平
- frompairs 数组对转换成对象
- intersection 交集
- union 并集
- xor 异或
- pull 移除元素
- 含sorted的方法接受有序数组
- 同名含By的方法额外接受一个迭代器参数
- 同名含Last的方法返回的是符合筛选条件元素的最后一个
- union和uniq的区别:union支持多个数组去重,uniq只能是一个数组