目录
1._.chunk(array, [size=1])——将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。
2._.compact(array)——创建一个新数组,包含原数组中所有的非假值元素。
3._.concat(array, [values])——创建一个新数组,将array与任何数组或值连接在一起。
4._.difference(array, [values])——返回一个过滤值后的数组。
5._.differenceBy(array, [values], [iteratee=_.identity])
6._.differenceWith(array, [values], [comparator])
7._.drop(array, [n=1]——去除array前面的n个元素。
8._.dropRight(array, [n=1])——去除array尾部的n个元素。(n默认值为1。)
9._.dropRightWhile(array, [predicate=_.identity])——去除array中从 predicate 返回假值开始到尾部的部分。
10. _.dropWhile(array, [predicate=_.identity])——去除array中从起点开始到 predicate 返回假值结束部分。
11._.fill(array, value, [start=0], [end=array.length])——使用 value 值来填充(替换) array。
13._.findLastIndex(array, [predicate=_.identity],[fromIndex=array.length-1])——从右到左的迭代集合array中的元素。
14._.head(array)——获取数组 array 的第一个元素。
15. _.flatten(array)——减少一级array嵌套深度。
16._.flattenDeep(array)——array递归为一维数组。
17. _.flattenDepth(array, [depth=1])——根据 depth 递归减少 array 的嵌套层级。
18._.fromPairs(pairs)——返回一个由键值对pairs构成的对象。
19._.indexOf(array, value, [fromIndex=0])——返回首次 value 在数组array中被找到的索引值。
20._.initial(array)——获取数组array中除了最后一个元素之外的所有元素。
21._.intersection([arrays])——创建唯一值的数组,这个数组包含所有给定数组都包含的元素,去交集。
24._.join(array, [separator=','])——将 array 中的所有元素转换为由 separator 分隔的字符串。
25._.last(array)——获取array中的最后一个元素。
26._.lastIndexOf(array, value, [fromIndex=array.length-1])——这个方法类似 _.indexOf ,区别是它是从右到左遍历array的元素。
27._.nth(array, [n=0])——获取array数组的第n个元素。如果n为负数,则返回从数组结尾开始的第n个元素。
28._.pull(array, [values])——移除数组array中所有和给定值相等的元素。
29._.pullAll(array, values)——这个方法类似_.pull,区别是这个方法接收一个要移除值的数组。
32._.pullAt(array, [indexes])——根据索引 indexes,移除array中对应的元素,并返回被移除元素的数组。
33._.remove(array, [predicate=_.identity])——移除数组中predicate(断言)返回为真值的所有元素,并返回移除元素组成的数组。
34._.reverse(array)——反转array,使得第一个元素变为最后一个元素,第二个元素变为倒数第二个元素,依次类推。
1._.chunk(array, [size=1])——
将数组(array)拆分成多个 size
长度的区块,并将这些区块组成一个新数组。
let array1=[1,2,3,4];
console.log(_.chunk(array1,2)); //[ [ 1, 2 ], [ 3, 4 ] ]
console.log(_.chunk(array1,3)); //[ [ 1, 2, 3 ], [ 4 ] ]
console.log(array1); //[ 1, 2, 3, 4 ]
- 返回一个包含拆分区块的新数组(注:相当于一个二维数组)。
- 不改变原数组。
2._.compact(array)——
创建一个新数组,包含原数组中所有的非假值元素。
let array = [1, 2, NaN, null, undefined, 0, false, 3, 4];
console.log(_.compact(array)); //[ 1, 2, 3, 4 ]
console.log(array); //[ 1, 2, NaN, null, undefined, 0, false, 3, 4 ]
false
,null
,0
,""
,undefined
, 和NaN
都是被认为是“假值”。- 不改变原数组。
3._.concat(array, [values])——
创建一个新数组,将array
与任何数组或值连接在一起。
let array = [1, 2, 3];
console.log(_.concat(array, 4, [5], [[6]])); //[ 1, 2, 3, 4, 5, [ 6 ] ]
console.log(array); //[ 1, 2, 3 ]
- 不改变原数组 。
4._.difference(array, [values])——返回一个过滤值后的数组。
let array = [1, 2, 3];
console.log(_.difference(array, [1])); //[ 2, 3 ]
console.log(_.difference(array, [1, 2, 3, 4])); //[]
console.log(array); //[ 1, 2, 3 ]
- 不改变原数组 。
- 返回的是差值。
5._.differenceBy(array, [values], [iteratee=_.identity])
let array = [2.1, 3.3, 4.5, 7.3];
//Math.floor 向下取整
console.log(_.differenceBy(array, [4.3, 5, 3, 7.9], Math.floor)); //[ 2.1 ]
console.log(array); //[ 2.1, 3.3, 4.5, 7.3 ]
- 类似
_.difference
,除了它接受一个iteratee
(注:迭代器), 调用array
和values
中的每个元素以产生比较的标准。- 结果值是从第一数组中选择。
- 不改变原数组。
6._.differenceWith(array, [values], [comparator])
let array = [[1, 2], [3, 4], [5, 6]];
console.log(_.differenceWith(array, [[3, 4]], _.isEqual)); //[ [ 1, 2 ], [ 5, 6 ] ]
console.log(array); //[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]
7._.drop(array, [n=1]
——去除array
前面的n
个元素。
let array = [1, 2, 3, 4, 5];
console.log(_.drop(array, 0)); //[ 1, 2, 3, 4, 5 ]
console.log(array); //[ 1, 2, 3, 4, 5 ]
console.log(_.drop(array, 2)); //[ 3, 4, 5 ]
console.log(array); //[ 1, 2, 3, 4, 5 ]
console.log(_.drop(array, 9)); //[]
console.log(array); //[ 1, 2, 3, 4, 5 ]
n
默认值为1。- 如果n为0,则返回原数组。
- 如果n大于数组长度,则返回空数组。
8._.dropRight(array, [n=1])
——去除array
尾部的n
个元素。(n
默认值为1。)
let array = [1, 2, 3, 4, 5];
console.log(_.dropRight(array)); //[ 1, 2, 3, 4 ]
console.log(array); //[ 1, 2, 3, 4, 5 ]
console.log(_.dropRight(array, 0)); //[ 1, 2, 3, 4, 5 ]
console.log(array); //[ 1, 2, 3, 4, 5 ]
console.log(_.dropRight(array, 3)); //[ 1, 2 ]
console.log(array); //[ 1, 2, 3, 4, 5 ]
console.log(_.dropRight(array, 9)); //[]
console.log(array); //[ 1, 2, 3, 4, 5 ]
9._.dropRightWhile(array, [predicate=_.identity])——
去除array
中从 predicate
返回假值开始到尾部的部分。
let array = [1, 2, 3, 4, 5, 6];
console.log(_.dropRightWhile(array,item=>item>3)); //[ 1, 2, 3 ]
console.log(array); //[ 1, 2, 3, 4, 5, 6 ]
10. _.dropWhile(array, [predicate=_.identity])——
去除array
中从起点开始到 predicate
返回假值结束部分。
let array = [1, 2, 3, 4, 5, 6];
console.log(_.dropWhile(array, item => item > 0)); //[]
console.log(_.dropWhile(array, item => item > 3)); //[1, 2, 3, 4, 5, 6]
console.log(_.dropWhile([6,5,4,3,2,1],item=>item>3)); //[ 3, 2, 1 ]
console.log(_.dropWhile([3,2,6,4,5,1],item=>item>3)); //[ 3, 2, 6, 4, 5, 1 ]
11._.fill(array, value, [start=0], [end=array.length])——
使用 value
值来填充(替换) array。
let array = [1, 2, 3, 4, 5];
console.log(_.fill(array, 9, 1, 3)); //[ 1, 9, 9, 4, 5 ]
console.log(array); //[ 1, 9, 9, 4, 5 ]
console.log(_.fill(array, 666)); //[ 666, 666, 666, 666, 666 ]
console.log(array); //[ 666, 666, 666, 666, 666 ]
console.log(_.fill(array, 777, 3)); //[ 666, 666, 666, 777, 777 ]
console.log(array); //[ 666, 666, 666, 777, 777 ]
- 从
start
位置开始, 到end
位置结束(但不包含end
位置)。- 会改变原数组。
[start=0]
(number): 开始位置(默认0)。[end=array.length]
(number):结束位置(默认array.length)。
12._.findIndex(array, [predicate=_.identity], [fromIndex=0])——
返回第一个通过 predicate
判断为真值的元素的索引值(index),而不是元素本身。
let array = [1, 2, 3, 4, 5, 3, 2, 5];
console.log(_.findIndex(array, item => item > 3)); //3
console.log(_.findIndex(array, item => item > 3, 4)); //4
console.log(array); //[1,2,3,4,5,3,2,5]
- 返回找到元素的 索引值(index),否则返回
-1
。[predicate=_.identity]
(Array|Function|Object|string): 这个函数会在每一次迭代调用。[fromIndex=0]
(number): The index to search from.
13._.findLastIndex(array, [predicate=_.identity],[fromIndex=array.length-1])——
从右到左的迭代集合array
中的元素。
let array = [1, 2, 3, 4, 5, 3, 2, 5];
console.log(_.findLastIndex(array, item => item > 3)); //7
console.log(_.findLastIndex(array, item => item > 3, 4)); //4
console.log(array); //[1,2,3,4,5,3,2,5]
- 返回找到元素的 索引值(index),否则返回
-1
。
14._.head(array)——
获取数组 array
的第一个元素。
let array = [3, 2, 1];
console.log(_.head(array)); // 3
- 如果查询的数组为空,则返回undefined。
15. _.flatten(array)——
减少一级array
嵌套深度。
let array = [1, 2, 3, 4, [5, 6]];
console.log(_.flatten(array)); //[ 1, 2, 3, 4, 5, 6 ]
console.log(array); //[ 1, 2, 3, 4, [ 5, 6 ] ]
let array1 = [[1, 2], 3, [4, [5, 6]]];
console.log(_.flatten(array1)); ////[ 1, 2, 3, 4, [ 5, 6 ] ]
console.log(array1); //[ [ 1, 2 ], 3, [ 4, [ 5, 6 ] ] ]
- 不改变原数组。
16._.flattenDeep(array)——array
递归为一维数组。
let array = [[1, 2], 3, [4, [5, 6]]];
console.log(_.flattenDeep(array)); //[ 1, 2, 3, 4, 5, 6 ]
console.log(array); //[[1, 2], 3, [4, [5, 6]]]
- 不改变原数组。
17. _.flattenDepth(array, [depth=1])
——根据 depth
递归减少 array
的嵌套层级。
let array = [[1, 2], 3, [4, [5, [6,7]]]];
console.log(_.flattenDepth(array, 2)); //[ 1, 2, 3, 4, 5, [ 6, 7 ] ]
18._.fromPairs(pairs)——
返回一个由键值对pairs
构成的对象。
let array = [["name", "mandy"], ["age", 18]];
console.log(_.fromPairs(array)); //{ name: 'mandy', age: 18 }
console.log(array); //[ [ 'name', 'mandy' ], [ 'age', 18 ] ]
19._.indexOf(array, value, [fromIndex=0])——
返回首次 value
在数组array
中被找到的索引值。
let array = [1, 2, 3, 2, 4, 3, 1];
console.log(_.indexOf(array, 2)); //1
console.log(_.indexOf(array, 2, 2)); //3
- 如果
fromIndex
为负值,将从数组array
尾端索引进行匹配。
20._.initial(array)——
获取数组array
中除了最后一个元素之外的所有元素。
let array = [1, 2, 3, 4];
console.log(_.initial(array)); //[ 1, 2, 3 ]
console.log(array); //[ 1, 2, 3, 4 ]
- 不改变原数组。
21._.intersection([arrays])
——创建唯一值的数组,这个数组包含所有给定数组都包含的元素,去交集。
console.log(_.intersection([1, 2], [2, 3], [4, 2])); //[ 2 ]
22._.intersectionBy([arrays], [iteratee=_.identity])——
接受一个 iteratee
调用每一个arrays
的每个值以产生一个值,通过产生的值进行了比较。结果值是从第一数组中选择。iteratee 会传入一个参数:(value)。
console.log(_.intersectionBy([1.1, 2.2], [2.4, 5.1], Math.floor)); //[2.2]
- 返回一个包含所有传入数组交集元素的新数组。
23._.intersectionWith([arrays], [comparator])——
接受一个 comparator
调用比较arrays
中的元素。结果值是从第一数组中选择。comparator 会传入两个参数:(arrVal, othVal)。
console.log(_.intersectionWith([1, 2], [2, 4], _.isEqual)); //[2]
24._.join(array, [separator=','])——
将 array
中的所有元素转换为由 separator
分隔的字符串。
let array = [1, 2, 3, 4];
console.log(_.join(array, "*")); //1*2*3*4
console.log(array); //[ 1, 2, 3, 4 ]
- 不改变原数组。
25._.last(array)
——获取array
中的最后一个元素。
let array = [3, 2, 1];
console.log(_.last(array)); //1
26._.lastIndexOf(array, value, [fromIndex=array.length-1])——
这个方法类似 _.indexOf
,区别是它是从右到左遍历array
的元素。
let array = [2, 1, 3, 2, 5, 3];
console.log(_.lastIndexOf(array, 2)); //3
console.log(_.lastIndexOf(array, 2, 1)); //0
27._.nth(array, [n=0])——
获取array
数组的第n个元素。如果n
为负数,则返回从数组结尾开始的第n个元素。
let array = [1, 2, 3, 4, 5];
console.log(_.nth(array, 3)); // 4
console.log(_.nth(array, -4)); // 2
28._.pull(array, [values])——
移除数组array
中所有和给定值相等的元素。
let array = [1, 2, 3, 4, 2, 3];
console.log(_.pull(array, 1, 3)); //[ 2, 4, 2 ]
console.log(array); //[ 2, 4, 2 ]
- 会改变原数组。
29._.pullAll(array, values)
——这个方法类似_.pull
,区别是这个方法接收一个要移除值的数组。
let array = [1, 2, 2, 3, 1, 3, 2];
console.log(_.pullAll(array, [2, 3])); //[ 1, 1 ]
console.log(array); //[ 1, 1 ]
- 会改变原数组。
30._.pullAllBy(array, values, [iteratee=_.identity])
——这个方法类似于_.pullAll
,区别是这个方法接受一个 iteratee
(迭代函数) 调用 array
和 values
的每个值以产生一个值,通过产生的值进行了比较。iteratee 会传入一个参数: (value)。
let array = [1, 2, 4, 3, 2, 3, 1];
console.log(_.pullAllBy(array, [1, 2], item => item > 3)); //[ 4 ]
console.log(array); //[ 4 ]
- 会改变原数组。
31._.pullAllWith(array, values, [comparator])——
这个方法类似于 _.pullAll
,区别是这个方法接受 comparator
调用array
中的元素和values
比较。comparator 会传入两个参数:(arrVal, othVal)。
let array = [1, 2, 3, 1, 1, 4, 2, 6];
console.log(_.pullAllWith(array, [1], _.isEqual)); //[ 2, 3, 4, 2, 6 ]
console.log(array); //[ 2, 3, 4, 2, 6 ]
- 会改变数组。
32._.pullAt(array, [indexes])——
根据索引 indexes
,移除array
中对应的元素,并返回被移除元素的数组。
let array = [1, 2, 3, 4];
console.log(_.pullAt(array, 1, 3)); //[ 2, 4 ]
console.log(array); //[ 1, 3 ]
- 会改变原数组。
33._.remove(array, [predicate=_.identity])——
移除数组中predicate
(断言)返回为真值的所有元素,并返回移除元素组成的数组。
let array = [1, 2, 3, 4];
console.log(_.remove(array, item => item > 2)); //[ 3, 4 ]
console.log(array); //[ 1, 2 ]
- 会改变原数组。
34._.reverse(array)
——反转array
,使得第一个元素变为最后一个元素,第二个元素变为倒数第二个元素,依次类推。
let array = [1, 2, 3, 4];
console.log(_.reverse(array)); //[ 4, 3, 2, 1 ]
console.log(array); //[ 4, 3, 2, 1 ]
- 会改变原数组。
注意事项
drop
,dropRight,dropRightWhile,
dropWhile,
其内部都是基于slice方法实现的。difference
、differenceBy
、differenceWith,
内部都是基于baseDifference()
方法进行处理,只不过是传入baseDifference()
的参数不同。