A={ value:1, items:[A,A,A] //items里面是A类型格式的对象}有什么好的方法,求出对象A里面所有value的总和
1 回答
RISEBY
TA贡献1856条经验 获得超5个赞
function sum(arr) {
var _sum = 0;
arr.forEach(v => _sum += v);
return _sum;
}
function sumA(A) {
if(A.items && A.items.length) {
return sum([A.value].concat(a.items.map(sumA)));
} else {
return A.value;
}
}
最终调用sumA求和即可。不知这样是否符合你的要求?
sumA中的那个concat是为了尾递归优化,不过我也不是很肯定这么写是不是就能进行尾递归优化。更易懂的版本:
function sumA(A) {
if(A.items && A.items.length) {
var sum = A.value;
for(let a of A.items) {
sum += sumA(a);
}
return sum;
} else {
return A.value;
}
}
添加回答
举报
0/150
提交
取消