这似乎对我来说是正确的,但它不起作用:
var arr = [1, 2, 3, 4, 5];
var bar = [2, 4];
arr = arr.filter(function(v) {
for (var i; i < bar.length; i++) {
return bar.indexOf(v);
}
});
console.log(arr); // []
// expected: [1, 3, 5]
这将如何工作,以及如何使用地图做同样的工作?
Array#filter
迭代数组,你不需要for
在里面filter
for
内部的问题filter
是它将返回元素的索引,如果没有找到它可以是-1
(真实的)和任何高达数组长度的东西.并且仅针对第一个元素即索引零,filter
不会在JavaScript中将元素添加为零是假的.
此外,for
循环将只检查的第一个元素bar
,并return
从那里.
var arr = [1, 2, 3, 4, 5];
var bar = [2, 4];
arr = arr.filter(function(v) {
return bar.indexOf(v) === -1;
});
console.log(arr);
document.write('' + JSON.stringify(arr, 0, 4) + '
');