2016-06-14 122 views
0

我试图找到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

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

做到了
相关问题