2016-06-14 121 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);

做到了
相關問題