【问题标题】:Comparing 2 arrays and pushing missing values to an Array - Javascript比较 2 个数组并将缺失值推送到数组 - Javascript
【发布时间】:2018-01-27 23:20:52
【问题描述】:

这是一个非常简单的问题,但我无法弄清楚逻辑。

我有Arr1 = [1,2,3,4]Arr2 = [3,4,5,6]

我想比较 Arr2Arr1 并将缺失值添加到 MissingArr = [];

我的代码

let missing = [];  
 arrOfNum.forEach( (number) => {

  // Arr2 = 3,4,5,6
  console.log("number: "+number);
  for(let i = 0; i < this.numbers.length; i++){

      // Arr1 = 1,2,3,4
      console.log("this.numbers: "+this.numbers[i]['number']); 

      if(number == this.numbers[i]['number'])
      {
        //Do Nothing
      }else{
        missing.push(this.numbers[i]['number']);
      }
  }
});

我不确定如何检查 Arr2 到 Arr1(完成整个 forloop),并且只有在 Arr1 中不存在 Arr2 值时才将其添加到缺失的数组中。

更新

Arr1 = [{id:1, number:1}, {id:2, number:2},{id:3, number:3}, {id:4, number:4}]
Arr2 = [3,4,5,6]

所以缺少的数组应该是:Missing= [5,6]

【问题讨论】:

  • Arr2.filter(e =&gt; !Arr1.includes(e));?
  • @NenadVracar 我忘了提到我的 Arr2 只是数字 arr 而 Arr1 是对象数组。这仍然有效吗? !Arr1['numbers'].includes(e)
  • 发布您的实际数据。
  • @NenadVracar 我已将实际数据发布到问题的更新部分

标签: javascript arrays json


【解决方案1】:

您可以使用filtersome 方法来做到这一点。

const Arr1 = [{id:1, number:1}, {id:2, number:2},{id:3, number:3}, {id:4, number:4}],
Arr2 = [3,4,5,6]

const result = Arr2.filter(e => !Arr1.some(o => o.id == e));
console.log(result)

【讨论】:

    【解决方案2】:

    您可以使用 Array.filter 来实现这一点。 Array.filter 返回一个包含与谓词匹配的项目的数组。

    var arr1 = [{key: 1},{key: 2},{key: 3},{key: 4}];
    var arr2 = [3,4,5,6];
    
    //This will return all values in array2 missing in array1
    var missing = arr1.filter(function(arr1_item){
        return arr2.indexOf(arr1_item.key) === -1;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多