簡體   English   中英

從兩個數組中提取非重復JavaScript

[英]extract non duplicates from two arrays JavaScript

考慮下面的代碼

我有兩個數據數組,需要不存在的值。

var stores = ["1", "2", "3", "4", "5"];
var favStores = ["2", "4"];

outer: for (var i = 0; i < stores.length; i++) {
    for (var j = 0; j < favStores.length; j++) {
        if (stores[i] != favStores[j]) {
            document.write('Stores I : ' + stores[i]);
            document.write('<br>');
            document.write('Fav Stores j : ' + favStores[j]);
            document.write('<br>');
            alert('Match Found' + stores[i]);
            //continue outer;
        }
    }
}

我需要我的輸出為

1,3,5在一個新數組中。

這條路:

var stores = ["1", "2", "3", "4", "5"];
var favStores = ["2", "4"];

var output = stores.filter(function(i){
      return favStores.indexOf(i)==-1;
});   

// output is ["1", "3", "5"]

您需要的是兩個陣列之間的差異。 類似lodash的庫具有該功能,但是如果您要構建自己的庫,則可以使用以下功能:

var stores = ["1", "2", "3 ", "4", "5"],
    favStores = ["2", "4"];

function diff(a, b) {
  var results = [];
  for(var i = 0; i < a.length; i++) {
    if(b.indexOf(a[i]) < 0)
      results.push(a[i]);
  }
  return results;
}

console.log(diff(stores, favStores));

請注意,您可以使用forEach遍歷數組,但是我在這里只是遺留證據。

暫無
暫無

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

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