2017-04-20 65 views
0

我有一個數組:如何使用過濾器數組刪除數組中的項目?

var arr = [1,2,4,5,1,2,3,4,5]; 

我有另一個數組:

var removeArr = [1,3,5]; 

我希望它刪除元素ARR已在removeArr

var result = arr.filter(function(item){ 
       return item != removeArr[???]; 
       }); 

我試圖用循環迭代它,但它不起作用。

+0

檢查,如果其他數組包含的項目 – Li357

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes –

+0

如何如果所有答案都一樣,我會選擇最佳答案嗎? – GTHell

回答

2

您可以使用Array#filter以及Array#indexOf函數來達到所需的輸出。

var arr = [1,2,4,5,1,2,3,4,5], 
 
    removeArr = [1,3,5], 
 
    result = arr.filter(function(item){ 
 
     return removeArr.indexOf(item) == -1; 
 
    }); 
 
    
 
    console.log(result);

1
var result = arr.filter(function(item){ 
    return removeArr.indexOf(item) === -1; // if the item is not included in removeArr, then return true (include it in the result array) 
}); 
2

var arr = [1,2,4,5,1,2,3,4,5]; 
 
    
 
var removeArr = [1,3,5]; 
 
    
 
var result = arr.filter(x => !removeArr.includes(x)); 
 
    
 
console.log(result);

1

可以檢查一個值是在陣列中通過檢查項目的索引不是-1。

var result = arr.filter(item => removeArr.indexOf(item) === -1)

2

你可以使用對同時濾波Set和測試。

var array = [1, 2, 4, 5, 1, 2, 3, 4, 5], 
 
    removeArray = [1, 3, 5], 
 
    result = array.filter((s => a => !s.has(a))(new Set(removeArray))); 
 
    
 
console.log(result);

+0

這是一個聰明的!花了一些時間來了解它是如何工作的,感謝它。 – wostex

+0

它使用一組封閉。 –

+0

是的,我在重寫入常規IIFE模板後發現它。 – wostex