Javascript 如何使用map和foreach筛选数组中不在另一个数组中的元素
我希望只使用Javascript 如何使用map和foreach筛选数组中不在另一个数组中的元素,javascript,Javascript,我希望只使用.map()和.forEach()方法(不使用.filter()或其他方法)查找数组中不在第二个数组中的元素 我尝试的是: <!DOCTYPE html> <html> <head> <title></title> </head> <body> <p id="res"></p> <script
.map()
和.forEach()
方法(不使用.filter()
或其他方法)查找数组中不在第二个数组中的元素
我尝试的是:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<p id="res"></p>
<script>
var result = document.getElementById("res");
var arr = [1,2,3,1,2,3,4];
var scor = [2,3];
x = arr.map(function(item){
return scor.forEach(function(item1){
if(item1 != item)
return item;
})
})
result.innerHTML = x;
</script>
</body>
</html>
var result=document.getElementById(“res”);
var-arr=[1,2,3,1,2,3,4];
var scor=[2,3];
x=arr.map(功能(项目){
返回scor.forEach(函数(项1){
如果(项目1!=项目)
退货项目;
})
})
result.innerHTML=x;
答案应该是[1,1,4]
,但我得到了[,,,,,,]
我的错误在哪里?您的外部函数(您传递给.map
的函数)不返回任何内容,因此您将得到一个充满未定义的的数组
相当于
x = [1,2,3,1,2,3,4].map(function (item) {});
您不应该为此使用map,它会为每个元素创建条目,这就是为什么会出现大量未定义的
在这里更方便:
var-arr=[1,2,3,1,2,3,4];
var scor=[2,3];
var x=arr.reduce(函数(上一个,当前){
如果(零值索引(当前)=-1){
上推(当前);
}
返回上一个;
}, []);
控制台日志(x)
应该使用filter
或for
循环,而不是forEach
<代码>var filteredar=arr.filter(函数(项){return scor.indexOf(项)=-1;})代码>问题是,您不能从forEach
返回某些内容,map
用于修改数组的每个元素,而不是过滤。如果答案必须是[1,1,4]
,那么为什么此限制仅使用.map()
和.forEach()
?@Tushar。。。不是原始问题的一部分。:)。OP用词不当:)无过滤器或其他方法。