JavaScript / Underscore.js - 从嵌套对象中动态减去值

JavaScript / Underscore.js - dynamically subtract values from nested object

考虑以下 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
        }
    },

}

我需要从 Larry 中减去 Moe 的每个 "bar" 值,反之亦然 - 这并不重要。每个 "stooge" 节点将始终具有相同的属性,例如18-24、foo、bar 等 然而,子项目(18-24 等)的数量会有所不同,因此不能硬编码。走狗的名字也总是不同的。

谁能告诉我如何将一个对象的条形值动态减去另一个?

更新:总会有 2 个傀儡具有完全相同的子属性。

使用嵌套循环。

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