2014-09-15 2 views
0

Здесь у меня есть два массива, но они не являются простыми array.See ниже:Как получить разницу между двумя объектами массива?

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) 

, но я не могу получить идентификатор 3, так как идентификатор 3 не был в б массиве. Пожалуйста помоги.

вот ответ я хочу

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

+0

В чем вопрос? –

+0

@AbdulJabbar Если элемент не был в массиве b. Используйте значение a. –

+0

В чем проблема? – Youness

ответ

1

Так что вы хотите вычтем «Num» в Ь из соответствующего «пит» в течение каждый элемент? Чем просто перебирать больше и проверить, если он содержится и в Ъ:

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; 
    } 
    } 
} 

+0

:(просто добавьте 'break', я думаю за 30 минут –

+0

@RyanYiada Извините, что вы имеете в виду? – fast

1

вы можете добавить некоторые переменные для flag, чтобы узнать, есть ли у вас такие же 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'] 
    } 
} 
Смежные вопросы