簡體   English   中英

Javascript,使用數組過濾數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM