从两个JavaScript数组中提取非重复项

从两个JavaScript数组中提取非重复项,javascript,arrays,Javascript,Arrays,考虑下面的代码 我有两个包含数据的数组,需要不存在的值 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]) {

考虑下面的代码

我有两个包含数据的数组,需要不存在的值

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;
        }
    }
}
var存储=[“1”、“2”、“3”、“4”、“5”];
var favStores=[“2”,“4”];
外部:用于(变量i=0;i”);
文件写入('Fav存储j:'+Fav存储[j]);
文件。写(“
”); 警报(“找到匹配项”+存储[i]); //继续对外开放; } } }
我需要我的输出

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"]
这样:

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));
var存储=[“1”、“2”、“3”、“4”、“5”],
favStores=[“2”,“4”];
功能差异(a,b){
var结果=[];
对于(变量i=0;i

请注意,您可以使用
forEach
遍历该数组,但我只是在这里证明传统。

您需要的是两个数组之间的差异。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));
var存储=[“1”、“2”、“3”、“4”、“5”],
favStores=[“2”,“4”];
功能差异(a,b){
var结果=[];
对于(变量i=0;i

请注意,您可以使用
forEach
遍历数组,但我只是在这里做传统的证明。

请参阅:。@RaMs\u earthstolearn:filter函数应用于数组的每个元素,返回值'false'将导致它不包括在新数组中。请参阅:。@RaMs\u earthstolearn:filter函数应用于数组的每个元素array&返回值'false'将导致它不包含在新数组中。如果必须比较需要更多代码的JSON对象,该怎么办。您必须迭代所有受支持的JSON类型(数组和对象),但还要检查值是否不同,并为此制定策略。如果必须比较需要更多代码的JSON对象,该怎么办。您必须迭代所有受支持的JSON类型(数组和对象),但还要检查值是否不同,并为此制定策略。