JavaScript Array.filter未按预期工作

JavaScript Array.filter未按预期工作,javascript,arrays,dictionary,filter,Javascript,Arrays,Dictionary,Filter,这对我来说似乎是正确的,但不起作用: var-arr=[1,2,3,4,5]; var-bar=[2,4]; arr=arr.filter(功能(v){ 用于(变量i;i!bar.includes(e))

这对我来说似乎是正确的,但不起作用:

var-arr=[1,2,3,4,5];
var-bar=[2,4];
arr=arr.filter(功能(v){
用于(变量i;i
这将如何工作,以及如何使用map执行相同的工作?

在数组中迭代,您不需要
过滤器内部

过滤器内部的
for
的问题在于,它将返回元素的索引,如果找不到该索引,则该索引可能是
-1
(truthy)以及数组长度以内的任何内容。并且仅对于第一个元素,即索引零,
filter
不会添加元素,因为在JavaScript中零是错误的

此外,for
循环将只检查
条的第一个元素是否从那里返回

var-arr=[1,2,3,4,5];
var-bar=[2,4];
arr=arr.filter(功能(v){
返回条索引(v)=-1;
});
控制台日志(arr);

document.write(''+JSON.stringify(arr,0,4)+'')你在哪里使用
i
?同意答案。要回答filter和map的问题,如果函数中的返回值为true,filter只返回这些元素。Map返回相同数量的元素,如果返回false值,则返回的元素将是未定义的。还有一件事,映射返回一个新数组。过滤器不会返回新数组。@t能否为showcase提供相同结果的贴图示例?如果使用
map
而不是
Filter
,则需要在贴图后使用
Filter
来移除孔@elkebirmedES6:
arr.Filter(e=>!bar.includes(e))