Javascript 如何获取两个数组对象之间的差异项?

Javascript 如何获取两个数组对象之间的差异项?,javascript,Javascript,这里我有两个数组,但它们不是简单的数组。请参见以下内容: var a = [{"id":1,"in":1,"num":3000},{"id":2,"in":1,"num":1500},{"id":3,"in":1,"num":1000}] var b = [{"id":1,"in":0,"num":1000},{"id":2,"in":0,"num":1000}] for (var i = a.length - 1; i >= 0; i--) { for (var j =b.l

这里我有两个数组,但它们不是简单的数组。请参见以下内容:

var a = [{"id":1,"in":1,"num":3000},{"id":2,"in":1,"num":1500},{"id":3,"in":1,"num":1000}]
var b = [{"id":1,"in":0,"num":1000},{"id":2,"in":0,"num":1000}]

for (var i = a.length - 1; i >= 0; i--) {
     for (var j =b.length - 1; j >= 0; j--) {
        if( a[i]['id'] == b[j]['id']){
             a[i]['rest'] = a[i]['num'] - b[j]['num']
         }
      }
 }
 console.log(a)
但我无法获取id 3,因为id 3不在b数组中。请帮忙

这是我想要的答案

a = [
   {"id":1,"in":1,"num":3000,"rest":2000},
   {"id":2,"in":1,"num":1500,"rest":500},
   {"id":3,"in":1,"num":1000,"rest":1000}
]

thk

那么,对于a的每个元素,您想从a中相应的“num”中减去b中的“num”?而不仅仅是迭代a并检查它是否也包含在b中:

var a = [{"id":1,"in":1,"num":3000},{"id":2,"in":1,"num":1500},{"id":3,"in":1,"num":1000}]
var b = [{"id":1,"in":0,"num":1000},{"id":2,"in":0,"num":1000}]

for (var i = a.length - 1; i >= 0; i--) {
  a[i]['rest'] = a[i]['num'];
  for (var j =b.length - 1; j >= 0; j--) {
    if( a[i]['id'] == b[j]['id']){
     a[i]['rest'] = a[i]['num'] - b[j]['num'];
     break;
    }
  }
}

您可以为
标志添加一些变量,以了解您是否拥有相同的
id
,下面是一个代码示例

var flag;
var a = [{"id":1,"in":1,"num":3000},{"id":2,"in":1,"num":1500},{"id":3,"in":1,"num":1000}]
var b = [{"id":1,"in":0,"num":1000},{"id":2,"in":0,"num":1000}]

for (var i = a.length - 1; i >= 0; i--)
    flag = false;
    for (var j =b.length - 1; j >= 0; j--) {
        if( a[i]['id'] == b[j]['id']){
            a[i]['rest'] = a[i]['num'] - b[j]['num']
            flag = true;
        }
    }
    if(!flag) {
        a[i]['rest'] = a[i]['num']
    }
}

@AbdulJabbar如果项不在b数组中。只使用a的值。有什么问题吗?你能重新表述你的问题吗?就目前而言,这毫无意义:/你应该从['id'中得到什么?它不正确:(只需添加
中断
,我想30mins@RyanYiada对不起,你什么意思?