Javascript,带数组的过滤数组

时间:2016-07-27 14:08:12

标签: javascript arrays foreach filter

我需要过滤一个array1,我的数组中有每个元素。两个数组都可以有一个随机数的元素。

 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]

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

6 个答案:

答案 0 :(得分:2)

使用数组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);
});

答案 1 :(得分:1)

更简单的方法是:

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

答案 2 :(得分:1)

array1 = [1, 2, 3, 4, 5];
array2 = [1, 3, 5];
filteredArray = [];

filteredArray = array1.filter(function (y) {
		return array2.indexOf(y) < 0;
	});
console.log(filteredArray);

答案 3 :(得分:0)

您可以使用CENTER来检查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;

答案 4 :(得分:0)

在ES6中,您可以使用Set

&#13;
&#13;
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);
&#13;
&#13;
&#13;

答案 5 :(得分:0)

所有<cfqueryparam>没有比赛让我变成一个沉闷的男孩......

&#13;
&#13;
indexOf
&#13;
&#13;
&#13;