六、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 (比较器),它调用比较 array、values 中的元素。 与 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]