数组减少javascript开始在第一笔总和后返回NaN

时间:2018-05-01 21:46:36

标签: javascript arrays

我无法弄清楚为什么array.reduce将在第一次传递时返回正确的总和,但在下一次传球时返回NaN。谁能解释为什么会发生这种情况?

编辑 - 我需要解释一下,我试图建立一个新的数组,每个数组都添加到前一个值。所以

[1,2,3,4] 变 [1,3,6,10]

现在它出来了 [1,3,楠,楠]

工作小提琴 https://jsfiddle.net/env4c02b/1/

var numbers = [1, 2, 6, 4];

function getSum(total, currentValue, currentIndex, arr) {
     var newVal = Number(total) + Number(currentValue)
   total.push(newVal);
   return total;
}

var display = numbers.reduce(getSum, [])
document.getElementById("show").innerHTML = display

1 个答案:

答案 0 :(得分:1)

您在Number(ARRAY)尝试了什么?如果您尝试将数组转换为数字,则会出现问题,如无意义转换(如苹果到表)。您想获得最后添加的数组数并将其求和:

var numbers = [1, 2, 3, 4];

function getSum(total, currentValue, currentIndex, arr) {
   var newVal = currentValue; // The new value is the current number
   if (currentIndex > 0) { // If we are in the second position or more, sum the last value, which is the curent position minus one.
       newVal += total[currentIndex-1];
   }
   total.push(newVal);
   return total;
}

var display = numbers.reduce(getSum, []);
document.getElementById("show").innerHTML = display