【发布时间】:2016-08-16 07:38:36
【问题描述】:
我有一个 JavaScript 对象数组,如下所示:
[{
name: "Root 1",
countCases: 0,
children: [
{
name: "Root 1.1",
countCases: 3
},
{
name: "Root 1.2",
countCases: 1,
children: [
{
name: "Root 1.2.1",
countCases: 3
},
{
name: "Root 1.2.2",
countCases: 1
},
{
name: "Root 1.2.3",
countCases: 1
}
]
}
]
},
{
name: "Root 2",
countCases: 0,
children: [
{
name: "Root 2.1",
countCases: 3
},
{
name: "Root 2.2",
countCases: 0,
children: [
{
name: "Root 2.2.1",
countCases: 3
},
{
name: "Root 2.2.2",
countCases: 1
}
]
}
]
}]
我想将所有嵌套子项的“countCases”值相加。这些值是:
Root 1 - 9
Root 1.1 - 3
Root 1.2 - 6
Root 1.2.1 - 3
Root 1.2.2 - 1
Root 1.2.3 - 1
Root 2 - 7
Root 2.1 - 3
Root 2.2 - 4
Root 2.2.1 - 3
Root 2.2.2 - 1
所以每个父母都有他们的“countCases”,并添加了他所有孩子的“countCases”。提前感谢您的帮助。
@edit:我尝试过这样的方法,但它不起作用:
function addCountCasesToParentFromChildren(data)
{
var sumCountCases = 0;
$.each(data, function(key, value) {
sumCountCases = value.countCases;
if (value.children != '')
{
value.countCases += addCountCasesToParentFromChildren(value.children);
}
});
return sumCountCases;
}
@edit2:好的,我做到了。解决办法:
function addCountCasesToParentFromChildren(data)
{
var sumCountCases = 0;
$.each(data, function(key, value) {
if (value.children != '')
{
value.countCases += addCountCasesToParentFromChildren(value.children);
}
sumCountCases += value.countCases;
});
return sumCountCases;
}
【问题讨论】:
-
只是递归遍历的问题。你有没有尝试过?
-
我试过这样的事情:function addCountCasesToParentFromChildren(data) { var sumCountCases = 0; $.each(data, function(key, value) { sumCountCases = value.countCases; if (value.children != '') { value.countCases += addCountCasesToParentFromChildren(value.children); } });返回总和计数案例; }
-
您的数组表示法不是 JavaScript(
=>在 JavaScript 中表示其他含义,数组索引从 0 开始,而不是 1)。 -
这只是一个快速的例子
-
那么答案不会那么快...
标签: javascript count nested children