Reputation: 4769
Here I have two array,but they are not the simple array.See below:
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)
but I cannot get the id 3, because id 3 was not in b array. Please help.
here is the answer i want
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
Upvotes: 0
Views: 85
Reputation: 2724
you can add some variable for flag
to know whether you have a same id
or not, here's an example with your code
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']
}
}
Upvotes: 1
Reputation: 885
So you want to substract the 'num' in b from the corresponding 'num' in a for every element of a? Than just iterate over a and check if it is contained also in 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;
}
}
}
Upvotes: 1