返回匹配的数组项并将其从原始数组中删除

时间:2016-06-14 06:20:44

标签: underscore.js lodash

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

_.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

1 个答案:

答案 0 :(得分:1)

您可以使用原生JavaScript Array#filter 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);