考虑以下JavaScript对象:
{
"moe": {
"25-34": {
"female": {
"foo": 1747600,
"bar": 0.17625997236482466
},
"male": {
"foo": 1002100,
"bar": 0.10107010660722751
}
},
"18-24": {
"female": {
"foo": 1104200,
"bar": 0.11136773946282867
},
"male": {
"foo": 735800,
"bar": 0.07421154020716296
}
}
},
"larry": {
"18-24": {
"male": {
"foo": 2229400,
"bar": 0.23708698010272988
},
"female": {
"foo": 743800,
"bar": 0.07909989046398605
}
},
"25-34": {
"male": {
"foo": 2092200,
"bar": 0.22249635766167197
},
"female": {
"foo": 852500,
"bar": 0.09065966203354142
}
},
}
我需要减去每个" bar"来自拉里的萌的价值,反之亦然 - 这并不重要。每个" stooge"节点将始终具有相同的属性,例如但是,18-24,foo,bar等子项目(18-24等)的数量会有所不同,因此无法进行硬编码。 stooge名称也总是不同。
有人可以建议我如何动态地将一个对象的条形值减去另一个对象吗?
更新:总会有2个具有完全相同子属性的stooges。
答案 0 :(得分:0)
使用嵌套循环。
var names = Object.keys(json_obj);
var stooge1 = json_obj[names[0]];
var stooge2 = json_obj[names[1]];
for (var age in stooge1) {
for (var gender in stooge1[age]) {
stooge2[age][gender].bar -= stooge1[age][gender].bar;
}
}