我有一个嵌套很深的 javascript 对象,其中包含无限数量的子对象。每个 child 都有一个值和一个总值。 totalValue 应该是其所有子项和子项的所有值的总和。我怎样才能使它工作?
目前我只能使用递归函数循环整个对象:
// Recursive function
_.each(names, function(parent) {
if(parent.children.length > 0) {
recursiveFunction(parent.children);
}
});
function recursiveFunction(children){
_.each(children, function(child) {
if(child.children.length > 0) {
recursiveFunction(child.children)
}
});
};
// Deeply nested javascript object
var names = {
name: 'name-1',
value: 10,
valueTotal: 0, // should be 60 (name-1.1 + name-1.2 + name-1.2.1 + name-1.2.2 + name-1.2.2.1 + name-1.2.2.2)
children: [{
name: 'name-1.1',
value: 10,
valueTotal: 0,
children: []
}, {
name: 'name-1.2',
value: 10,
valueTotal: 0, // should be 40 (name-1.2.1 + name-1.2.2 + name-1.2.2.1 + name-1.2.2.2)
children: [{
name: 'name-1.2.1',
value: 10,
valueTotal: 0,
children: []
}, {
name: 'name-1.2.2',
value: 10,
valueTotal: 0, // should be 20 (name-1.2.2.1 + name-1.2.2.2)
children: [{
name: 'name-1.2.2.1',
value: 10,
valueTotal: 0,
children: []
}, {
name: 'name-1.2.2.2',
value: 10,
valueTotal: 0,
children: []
}]
}]
}]
}
}
最佳答案
所以事实上你想这样做: 每个元素都向他的 child 询问它的值,这些元素也这样做并返回他们的 totalValues 加上他们自己的值(value)。
function sumUp(object){
object.totalValue = 0;
for(child of object.children){
object.totalValue += sumUp(child);
}
return object.totalValue + object.value;
}
这样开始:
const totalofall = sumUp(names);
console.log(names); //your expected result.
关于javascript - 父值作为嵌套 javascript 对象中所有子值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745837/