Lodash——数组Array(一)

本文深入解析了lodash库中针对数组的各种实用操作方法,包括数组的切分、筛选、连接、填充、查找、移除等常见需求,适用于前端、后端及全栈开发者提升代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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。

 12._.findIndex(array, [predicate=_.identity], [fromIndex=0])——返回第一个通过 predicate 判断为真值的元素的索引值(index),而不是元素本身。

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])——创建唯一值的数组,这个数组包含所有给定数组都包含的元素,去交集。

22._.intersectionBy([arrays], [iteratee=_.identity])——接受一个 iteratee 调用每一个arrays的每个值以产生一个值,通过产生的值进行了比较。结果值是从第一数组中选择。iteratee 会传入一个参数:(value)。

 23._.intersectionWith([arrays], [comparator])——接受一个 comparator 调用比较arrays中的元素。结果值是从第一数组中选择。comparator 会传入两个参数:(arrVal, othVal)。

 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,区别是这个方法接收一个要移除值的数组。

30._.pullAllBy(array, values, [iteratee=_.identity])——这个方法类似于_.pullAll ,区别是这个方法接受一个 iteratee(迭代函数) 调用 array 和 values的每个值以产生一个值,通过产生的值进行了比较。iteratee 会传入一个参数: (value)。

31._.pullAllWith(array, values, [comparator])——这个方法类似于 _.pullAll,区别是这个方法接受 comparator 调用array中的元素和values比较。comparator 会传入两个参数:(arrVal, othVal)。 

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 ]
  • falsenull0""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 ]
  •  会改变原数组。

注意事项

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值