添加数组元素Javascript

时间:2016-12-28 20:46:24

标签: javascript function loops for-loop sum

为什么这段代码会返回10而不是2?

var arrToSum = [2, 4, 10];
function sumArray(array) {
    var result = 0;
    for (var i = array[0]; i < array.length; i++) {
    result += array[i];
    }
  return result;
}
sumArray(arrToSum);

// function returns 10

如果遵循循环逻辑,我会在将 2 添加到 结果 变量后结束,因为下一个 i 等于3,循环应该结束。请解释那里发生的事情。

3 个答案:

答案 0 :(得分:2)

for循环中的工作原理:

for (var i = array[0]; i < array.length; i++) {

在循环中,这些是执行第一次迭代后的结果;

第一次迭代; i = 2

var i = array[0]; // i = 2;
result += array[i]; // result = 10;

array[i]array[2],即10。因此,result为10。

第二次迭代; i = 3

array.length是3,因为它有3个元素。条件i < array.length;为false,代码中断循环,将结果返回为10.

答案 1 :(得分:1)

您从2开始(数组[0]的值),而不是从0开始。更改

for (var i = array[0]; i < array.length; i++) {

for (var i = 0; i < array.length; i++) {

答案 2 :(得分:0)

这就是为什么你应该熟悉javascript中的函数式编程。 mapfilterreduce是您的朋友。特别是map

尽量避免使用常规循环,因为它们更容易出错。在您的情况下,您已经搞乱了计数器变量i

var sum = [2, 4, 10].reduce((a, b) => a + b, 0);