Javascript,使用数组过滤数组

Javascript,使用数组过滤数组,javascript,arrays,foreach,filter,Javascript,Arrays,Foreach,Filter,我需要过滤数组1,数组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 -&g

我需要过滤数组1,数组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]

如何过滤另一个数组中包含所有元素的数组?

使用数组索引的方法

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) < 0;
});

更简单的方法是:

var filteredArray = array1.filter(function(item) {
    return !(array2.indexOf(item) >= 0);
});

更简单的方法是:

var filteredArray = array1.filter(function(item) {
    return !(array2.indexOf(item) >= 0);
});
您可以使用
indexOf()

 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;
您可以使用
indexOf()

 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;
array1=[1,2,3,4,5];
array2=[1,3,5];
filteredArray=[];
filteredArray=array1.过滤器(函数(y){
返回数组2.indexOf(y)<0;
});
控制台日志(filteredArray)
array1=[1,2,3,4,5];
array2=[1,3,5];
filteredArray=[];
filteredArray=array1.过滤器(函数(y){
返回数组2.indexOf(y)<0;
});
控制台日志(filteredArray)在ES6中,您可以使用它

var array1=[1,2,3,4,5],
array2=[1,3,5],
filteredArray=array1.filter((set=>a=>!set.has(a))(新的set(array2)));
控制台日志(filteredArray)在ES6中,您可以使用它

var array1=[1,2,3,4,5],
array2=[1,3,5],
filteredArray=array1.filter((set=>a=>!set.has(a))(新的set(array2)));

控制台日志(filteredArray)All
indexOf
不玩耍会使我变傻

var array1=[1,2,3,4,5],
array2=[1,3,5],
filtered=array1.filter(e=>!array2.includes(e));

console.log(过滤)All
indexOf
不玩耍会使我变傻

var array1=[1,2,3,4,5],
array2=[1,3,5],
filtered=array1.filter(e=>!array2.includes(e));


console.log(过滤)-您可以使用它-您可以使用不起作用的它,因为0…n应导致false,而true中的-1仍然不起作用。如果您输入
返回!(列2.indexOf(项目)>=0)应该可以。性感的人使用
~不是
!(…>=0)
只是
…<0
是,我也会的!>=0 ... 0>=0是真的!真是假。。。相信我<代码>!(a.indexOf(b)>=0)
a.indexOf(b)<0
。。。或者,更简单地说<代码>!(a>=0)
=
a<0
不起作用,因为0…n应导致false,而true中的-1仍然不起作用。如果您输入
返回!(列2.indexOf(项目)>=0)应该可以。性感的人使用
~不是
!(…>=0)
只是
…<0
是,我也会的!>=0 ... 0>=0是真的!真是假。。。相信我<代码>!(a.indexOf(b)>=0)
a.indexOf(b)<0
。。。或者,更简单地说<代码>!(a>=0)
=
a<0
!array2.包括(x)
(ECMAScript 2016)是,带有ECMAScript 2016。。。还没有一款浏览器是100%的ecmascript 2015,所以,见鬼,让我们跳到ecmascript 2020:pIt只是一种方法。打补丁很容易,即使没有传送带。非常感谢!事实上,阵列#过滤器在IE8或更低版本中无法工作。。。所以所有的ATM机都会因为这个代码而崩溃:p
!array2.包括(x)
(ECMAScript 2016)是,带有ECMAScript 2016。。。还没有一款浏览器是100%的ecmascript 2015,所以,见鬼,让我们跳到ecmascript 2020:pIt只是一种方法。打补丁很容易,即使没有传送带。非常感谢!事实上,阵列#过滤器在IE8或更低版本中无法工作。。。所以所有的自动取款机都会因为这个代码而崩溃:pWe会让它变得更加复杂。。!filteredArray=array1.filter(函数(set,a){return!set.has(a)}.bind(null,新集(array2))怎么样。?在这种情况下,您可以使用
新集合(…)
作为参数。我们可以使它更加复杂。。!filteredArray=array1.filter(函数(set,a){return!set.has(a)}.bind(null,新集(array2))怎么样。?在这种情况下,可以使用
新集合(…)
作为此参数。