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用词不当:)无
过滤器
或其他方法。