我需要过滤一个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]
如何使用另一个数组中的所有元素过滤数组?
答案 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
。
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;
答案 5 :(得分:0)
所有<cfqueryparam>
没有比赛让我变成一个沉闷的男孩......
indexOf
&#13;