在以下递归代码段中:
function addArray(total,array){
total += array[0];
remainingList = array.slice(1);
if (remainingList > 0){
console.log(remainingList);
return addArray(total,remainingList);
}
else {
return total;
}
}
然后在控制台:
数组选项 - 1
得分= [1,2,3]; totalScores = addArray(0,得分); // 1 - ???
< 1
数组选项 - 2
得分= [1,2];
totalScores = addArray(0,得分); // 3 - 有道理
[2]
< 3
数组选项 - 3
得分= [2,3,4]; totalScores = addArray(0,得分); // 2 - ???
< 2
数组选项 - 4
得分= [2,3]; totalScores = addArray(0,得分); // 5 - 有道理
[3]
5
数组选项 - 5
分数= [1,2,3,4]; totalScores = addArray(0,得分); // 1 - ???
< 1
我可以通过使用" if(remainingList.length> 0)轻松修复..."在代码片段中,但我试图弄清楚在if条件中使用数组实际上是什么。 Javascript如何解释"真实" /" falsely"给出不同阵列选项的结果。我知道一个空数组[] = true,但我似乎不清楚该函数如何退出使用不同的数组选项。
答案 0 :(得分:2)
将数组与常量标量 0 进行比较时会出现问题。如果列表中至少有3个元素,则会发生这种情况。此比较为 false ,并且例程返回其仅在第一个元素上计算的总和。
使用1个元素,您将剩余的列表作为null,返回第一个元素的值。使用2个元素,单元素尾部评估算法所需的方式,并返回两个元素的总和。
答案 1 :(得分:1)
我认为你打算写if (remainingList.length > 0)
,而不是if (remainingList > 0)
。请注意,后者将数组与单个值进行比较,这实际上没有意义。
function addArray(total,array){
total += array[0];
remainingList = array.slice(1);
if (remainingList.length > 0){
console.log(remainingList);
return addArray(total,remainingList);
}
else {
return total;
}
}