返回 导航

其他

hangge.com

JS - Lodash工具库的使用详解6(Array数组函数3:移除、修改原数组内容)

作者:hangge | 2019-10-02 08:10

六、Array 数组操作函数3:修改原数组内容

1,剔除一个数组的元素(指定元素移除)

pull 方法可以移除数组 array 中所有和给定值相等的元素。
var array = [1, 2, 3, 1, 2, 3];
 
_.pull(array, 2, 3);
console.log(array); 

2,剔除一个数组的元素(指定索引移除)

pullAt 方法根据索引 indexes,移除 array 中对应的元素,并返回被移除元素的数组。该方法同样会改变原数组。
var array = [5, 10, 15, 20];
var evens = _.pullAt(array, 1, 3);
 
console.log(array);   // => [5, 15]
console.log(evens);   // => [10, 20]

3,剔除一个数组的元素(与另一个数组比较)

(1)pull 与前文介绍的 difference 类似。但它不是创建一个新数组,而是直接移除原数组中所有与另一个数组里相等的元素。
var array = [1, 2, 3, 1, 2, 3];
 
_.pullAll(array, [2, 3]);
console.log(array);   // => [1, 1]

(2)pullAllBy 方法相较于 pullAll 方法多了第三个参数, 该参数接受一个 iteratee (迭代器),它会分别迭代两个数组的每个元素,返回的值作为比较值。 与 differenceBy 不同的是,该方法会改变原数组。
var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
 
_.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
console.log(array);   // => [{ 'x': 2 }]

(3)pullAllWith 方法相较于 pullAll 方法多了第三个参数, 该参数接受一个 comparator (比较器),它调用比较 arrayvalues 中的元素。 与 differenceWith 不同的是,该方法会改变原数组。
var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
 
_.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
console.log(array);   // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]

4,剔除一个数组的元素(通过方法判断)

remove 方法可以移除数组中 predicate(断言)返回为真值的所有元素,并返回移除元素组成的数组。
var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
  return n % 2 == 0;
});
 
console.log(array);   // => [1, 3]
console.log(evens);   // => [2, 4]
评论

全部评论(0)

回到顶部