[英]Javascript, filtering array with an array
我需要過濾一個array1,其中包含數組2中的每個元素。兩個數組都可以具有隨機數量的元素。
array1 = [1,2,3,4,5];
array2 = [1,3,5];
filteredArray = [];
array2.forEach(function(x){
filteredArray = array1.filter(function(y){
return y !== x;
});
});
return filteredArray;
//should return -> [2,4]
// returns [1,2,3,4]
如何過濾另一個數組中所有元素的數組?
使用數組indexOf方法
var array1 = [1,2,3,4,5];
var array2 = [1,3,5];
var filteredArray = array1.filter(function(x) {
return array2.indexOf(x) < 0;
});
或者,對於性感的人,使用!~
與indexOf
var array1 = [1,2,3,4,5];
var array2 = [1,3,5];
var filteredArray = array1.filter(function(x) {
return !~array2.indexOf(x);
});
一個更簡單的方法是:
var filteredArray = array1.filter(function(item) {
return !(array2.indexOf(item) >= 0);
});
array1 = [1, 2, 3, 4, 5]; array2 = [1, 3, 5]; filteredArray = []; filteredArray = array1.filter(function (y) { return array2.indexOf(y) < 0; }); console.log(filteredArray);
您可以使用indexOf()
來檢查array2
項是否在array1
然后僅將其添加到filteredArray
中:
array1 = [1,2,3,4,5];
array2 = [1,3,5];
filteredArray = [];
array2.forEach(function(x){
if (array1.indexOf(array2[x] > -1) {
filteredArray.push(array2[x]);
}
});
return filteredArray;
在ES6中,可以使用Set
。
var array1 = [1, 2, 3, 4, 5], array2 = [1, 3, 5], filteredArray = array1.filter((set => a => !set.has(a))(new Set(array2))); console.log(filteredArray);
所有的indexOf
沒有讓我成為一個沉悶的男孩。
var array1 = [1,2,3,4,5], array2 = [1,3,5], filtered = array1.filter(e => !array2.includes(e)); console.log(filtered);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.