嵌套数组的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
是真实的。