簡體   English   中英

如何使用map和foreach過濾數組中不在另一個數組中的元素

[英]How to filter elements in an array that are not in another array using map and foreach

我想僅使用.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>

答案應該是[1,1,4]但我正在得到[,,,,,,,]

我的錯誤在哪里?

您的外部函數(傳遞給.map函數)不返回任何內容,因此最終得到一個充滿undefined s的數組。

相當於

x = [1,2,3,1,2,3,4].map(function (item) {});

您不應該為此使用map,它會為每個元素創建一個條目,這就是為什么您會得到一堆undefined的原因。

Array.prototype.reduce在這里會更加方便:

 var arr = [1, 2, 3, 1, 2, 3, 4]; var scor = [2, 3]; var x = arr.reduce(function(prev, curr) { if (scor.indexOf(curr) === -1) { prev.push(curr); } return prev; }, []); console.log(x); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM