[英]Compare two array objects and find unique values
我有兩個對象是數組。 我想比較它們並找到唯一的值,然后將它們分配到另一個數組中。 這是我的代碼
function()
{
var input1 = [2,3,4,5];
var input2 = [2,3];
var arrayVal = [];
var res = input1.filter(function (n)
{
return input2.indexOf(n) == -1
}):
arrayVal.push(res);
console.log(arrayVal);
}
預期結果是4,5。 但是我的輸出是2,3,4,5。
這是一些應該起作用的老式代碼:
for (var i = 0; i < input1.length; i++){
var found=false;
for (var j = 0; j < input2.length; j++){
if (input1[i]==input2[j]){
found=true;
break;
}
}
if (!found)
arrVal.push(input1[i]);
}
您的代碼中存在語法錯誤。
return input2.indexOf(n) == -1
}): // <-- should be a semicolon
您的代碼看起來大部分都很好。 因為您調用arrayVal.push(res);
輸出實際上是[[4, 5]]
arrayVal.push(res);
。 那條線將一個數組推入另一個數組,從而導致嵌套數組。 您可以使用傳播語法並避免嵌套: arrayVal.push(...res);
。 之后,輸出為[4, 5]
。
完整的代碼是:
function()
{
var input1 = [2,3,4,5];
var input2 = [2,3];
var arrayVal = [];
var res = input1.filter(function (n)
{
return input2.indexOf(n) == -1
});
arrayVal.push(...res);
console.log(arrayVal); // [4, 5]
}
而且我確定您的代碼已針對該問題進行了修改,但是在此處同時使用res
和arrayVal
是沒有意義的。 您可以這樣重構代碼:
function() {
var input1 = [2,3,4,5],
input2 = [2,3];
var input1SubtractInput2 = input1.filter(function(n) {
return input2.indexOf(n) === -1
});
console.log(input1SubtractInput2); // [4, 5]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.