[英]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.