簡體   English   中英

比較兩個數組對象並找到唯一值

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

而且我確定您的代碼已針對該問題進行了修改,但是在此處同時使用resarrayVal是沒有意義的。 您可以這樣重構代碼:

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.

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