Return 匹配数组项并将其从原始数组中删除

Return matched array items and remove them from original array

我正在尝试查找 lodash 是否具有可以根据某些查询进行过滤的功能,return 匹配对象的数组,但从原始数组中删除匹配的对象.

_.filter 非常相似,但原始数组被修改并删除了匹配元素。

例子

var originalArray = [1, 2, 3, 4, 5];
console.log(originalArray);
----> 1, 2, 3, 4, 5

var evenNumbers = _.somethingSimilarToFilter(originalArray, function(n) {
    return n % 2 === 0
});

console.log(evenNumbers);
----> 2, 4

console.log(originalArray);
----> 1, 3, 5

您可以使用原生 JavaScript Array#filter and Array#splice 方法

var originalArray = [1, 2, 3, 4, 5];
var evenNumbers = originalArray.filter(function(n, i, arr) {
  // just remove the element from array if  even number
  return n % 2 === 0 && arr.splice(i, 1)
});

console.log(originalArray, evenNumbers);