【发布时间】:2021-11-22 08:48:26
【问题描述】:
我有一个这样的 JSON 对象,我们称之为“testJson”:
{
"property1": [{
"id": "abc",
"category": "recordsCount1"
}, {
"id": "def",
"category": "recordsCount2"
}
],
"property2": [{
"abc": 8,
"def": 15
}, {
"abc": 62,
"def": 7
}, {
"abc": 4,
"def": 16
}
]}
我想为“abc”和“def”属性总结“property2”内三个对象中的所有值。例如,对于“abc”,我们应该收到 8 + 62 + 4 = 74,对于“def”,我们应该收到 15 + 16 + 7 = 38。
到目前为止,我已经在两个不同的函数中使用了 2 个 for 循环,如下所示:
function totalAbc(testJson) {
var total = 0;
for (var i = 0; i < testJson.property2.length; i++) {
total = total + testJson.property2[i].abc;
}
return total;
function totalDef(testJson) {
var total1 = 0;
for (var i = 0; i < testJson.property2.length; i++) {
total1 = total1 + testJson.property2[i].def;
}
return total1;
}
var sumUpValue = totalAbc(testJson) + totalDef(testJson);
问题
有没有更好的方法来做到这一点,例如使用“property1”中的 id,因为它们是相同的?问题是,我想避免在循环遍历它们时使用“abc”和“def”的确切属性名称,因为它们不是恒定的并且会根据某些标准进行更改。
提前致谢!
【问题讨论】:
-
我删除了
json标签(参见json标签的使用说明)。
标签: javascript arrays function for-loop