嵌套数组的JavaScript递归

嵌套数组的JavaScript递归,javascript,arrays,object,Javascript,Arrays,Object,我尝试了以下代码,预期返回14,但结果是Nan。我认为这可能是异步问题,但不确定如何解决它。有人知道解决这个问题的更聪明的方法吗 a = {key: "a", value: 1} // 1 b = {key: "b", values: [a, a, a]} // 3 c = {key: "c", values: [a, a]} // 2 d = {key: "d", values: [a, a

我尝试了以下代码,预期返回
14
,但结果是
Nan
。我认为这可能是异步问题,但不确定如何解决它。有人知道解决这个问题的更聪明的方法吗

a = {key: "a", value: 1}          // 1
b = {key: "b", values: [a, a, a]} // 3
c = {key: "c", values: [a, a]}    // 2
d = {key: "d", values: [a, a, a]} // 3
e = {key: "e", values: [a, a]}    // 2
f = {key: "f", values: [a, a]}    // 2
g = {key: "g", values: [a]}       // 1

h = {key: "h", values: [a, b, c]} // 6
i = {key: "i", values: [d, e]}    // 5
j = {key: "i", values: [f, g]}    // 3

k = {key: "i", values: [h, i, j]} // 14



function addCumulativeValue (obj) {
  if(obj.value) {
    return obj.value;
  }
  
  obj.value = obj.values
    .map(o => addCumulativeValue(o))
    .reduce((a, b) => a + b)
}

addCumulativeValue(k);
k.value

您没有
返回
最终的
对象值

(a、a、a)一个)}//3 c={{键:“c”键:“c”,值:[a、a、a)一个..3 c={键:“c”,值:[a、a、a..a.a.a.a.a.a...元元元元元元元元元元元元元元元元元元元元元元音...a.1.a.a.元元元元元音.......3 c.元元元音........元元元元元音............元元元元................元.......元..元.元.元.元.元.元.元.元.元..元.元.元.元.元.元.元.元..元.元.元.元.元.元.元.元.元.元.元.]}//14 函数addCumulativeValue(obj){ if(目标值){ 返回对象值; } obj.value=obj.values .map(o=>addCumulativeValue(o)) .减少((a,b)=>a+b); 返回对象值; } 加法累积值(k);
控制台日志(k值)您忘记添加返回语句。这里没有异步。。。
if
条件在第一次尝试时返回
true
,并返回数组
if(obj.value){
对于非空数组,
obj.value
是真实的。