猿问

js递归求和

A={

    value:1,

    items:[A,A,A] //items里面是A类型格式的对象

}

有什么好的方法,求出对象A里面所有value的总和


慕神8447489
浏览 794回答 1
1回答

RISEBY

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;  }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答