比较两个数组并将缺失的值推入一个数组 - Javascript

3

这是一个相当简单的问题,但我无法想出逻辑。

我有 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中(完整执行for循环),仅当Arr2的值不存在于Arr1中时,将其添加到缺失的数组中。

更新

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 => !Arr1.includes(e)); - Nenad Vracar
@NenadVracar 我忘了提到,我的Arr2只是一个数字数组,而Arr1是一个对象数组。这个方法仍然适用吗?!Arr1['numbers'].includes(e) - Murlidhar Fichadia
发布您的实际数据。 - Nenad Vracar
@NenadVracar 我已经在问题的更新部分发布了实际数据。 - Murlidhar Fichadia
2个回答

3
你可以使用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)


0
你可以使用 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;
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接