const tree = [
{
v: 5,
c: [
{
v:10,
c: [
{
v:11,
}
]
},
{
v:7,
c: [
{
v:5,
c: [
{
v:1
}
]
}
]
}
]
},
{
v: 5,
c: [
{
v:10
},
{
v:15
}
]
}
]
function treeSum(tree) {
let sum = 0;
for (let i = 0; i < tree.length; i++) {
sum+= tree[i].v;
if (!tree[i].c) {
return tree[i].v;
}
sum += treeSum(tree[i].c)
}
/* tree.forEach((node,index)=>{
index;
sum += node.v
if (!node.c) {
return node.v;
}
sum += treeSum(node.c)
}) */
/* c foreach все работает*/
return sum
}
在方法
forEach中,在每次迭代时,都会调用一个回调函数,在该函数中计算总和;if (!node.c) { return node.v; }如果不是,node.c则将return中止执行并且sum += treeSum(node.c)不会执行,回调将应用于下一个元素。Bforreturn将中断循环的执行。sum += treeSum(tree[i].c)在执行..之前,您需要移动到下一个元素。