使用 lodash 对属性子对象求和
Sum properties child objects with lodash
我在我的项目中使用了lodash。我有一个JSON
{ arcade: {
sam: {
played: 10,
wins: 5,
lose: 5
},
adam: {
played: 10,
wins: 5,
lose: 5
},
}
pvp: {
sam: {
played: 10,
wins: 5,
lose: 5
},
adam: {
played: 10,
wins: 5,
lose: 5
},
}
}
我想收到 JSON
的结果
{
arcade: {
played: 20,
wins: 10,
lose: 10
},
pvp: {
played: 20,
wins: 10,
lose: 10
},
}
如何计算js/lodash子对象的值之和?
谢谢
http://jsfiddle.net/efmmh8ok/
我会使用 reduce
函数 (lodash doc)
_.reduce(ori, function (ori1, data1, c) {
ori1[c] = _.reduce(data1, function (ori2, data2) {
_.each(data2, function (value, key) {
ori2[key] = ori2[key] || 0; // if it undefined yet put number 0
ori2[key] += value; // sum with the previous value
});
return ori2; // the populated data {played: 20, wins: 10, lose: 10}
}, ori1[c] || {});
return ori1; // the populated data {pvp: {played: 20, wins: 10, lose: 10}}
}, {});
我在我的项目中使用了lodash。我有一个JSON
{ arcade: {
sam: {
played: 10,
wins: 5,
lose: 5
},
adam: {
played: 10,
wins: 5,
lose: 5
},
}
pvp: {
sam: {
played: 10,
wins: 5,
lose: 5
},
adam: {
played: 10,
wins: 5,
lose: 5
},
}
}
我想收到 JSON
的结果{
arcade: {
played: 20,
wins: 10,
lose: 10
},
pvp: {
played: 20,
wins: 10,
lose: 10
},
}
如何计算js/lodash子对象的值之和? 谢谢
http://jsfiddle.net/efmmh8ok/
我会使用 reduce
函数 (lodash doc)
_.reduce(ori, function (ori1, data1, c) {
ori1[c] = _.reduce(data1, function (ori2, data2) {
_.each(data2, function (value, key) {
ori2[key] = ori2[key] || 0; // if it undefined yet put number 0
ori2[key] += value; // sum with the previous value
});
return ori2; // the populated data {played: 20, wins: 10, lose: 10}
}, ori1[c] || {});
return ori1; // the populated data {pvp: {played: 20, wins: 10, lose: 10}}
}, {});