对数组函数中的所有数字求和,不返回总和

时间:2017-08-03 23:45:32

标签: javascript

我正在尝试创建一个对数组中所有数字求和的函数!我是JavaScript新手,需要有人指点我正确的方向!

function sum(arr) {

    var i = 0;

    for (var index = 0; index < arr.length; index++) {
        return index += arr[i];
    }
}

sum([1, 2, 3]); //6

5 个答案:

答案 0 :(得分:1)

使用 Array.reduce()

&#13;
&#13;
function getSum(ary){
  return ary.reduce(function(sum, value) {
    return sum + value;
  }, 0);
}

console.log(getSum([0, 1, 2, 3]));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

说明代码错误的地方

function sum(arr) {
    var i = 0;

    for (var index = 0; index < arr.length; index++) {
        return index += arr[i]; // this will return from your function in the first iteration
    }
}

正如评论所说,return将在第一次迭代中退出您的函数

另外,你要添加index,它应该是数组的索引,你要添加到i,然后添加return i循环之后

所以,代码应该是

function sum(arr) {
    var i = 0;

    for (var index = 0; index < arr.length; index++) {
        i += arr[index];
    }

    return i;
}

正如另一个答案所指出的,一个可能更好的选择是使用数组缩减功能 - 但该答案中的代码不是“最佳”使用reduce

function getSum(ary){
    return ary.reduce(function(sum, value) {
        return sum + value;
    }, 0);
}

实际上可以写成

function getSum(ary){
    return ary.reduce(function(sum, value) {
        return sum + value;
    });
}

这使用少一次迭代,因为没有“初始值”,第一次迭代将索引0和1加在一起

当然,它不会产生性能差异,但为什么不正确使用内置函数:p

答案 2 :(得分:1)

代码的许多基本问题。

您需要一个单独的变量来累积结果。您的代码正在写入for循环的索引变量。出于多种原因,这是错误的。

在循环的第一次迭代后也会返回。

假设你想使用for循环(这不是最少量的代码),

function sum(arr) {    
  var sum = 0;
  for (var index = 0; index < arr.length; index++) {
    sum += arr[index];
  }    
  return sum;
}

答案 3 :(得分:1)

function Sum(arr) {

   var sum = 0;

   for (var index = 0; index < arr.length; index++) {
       sum += arr[index];
   }
   return index;

}

Sum([1, 2, 3]); //6

立即退出退出功能。您的代码永远不会对值求和。您的代码中的“我”是什么!?!什么指数做什么!?

答案 4 :(得分:0)

以下是您使用该功能的方法:

  function sum(arr) {
     // this is the variable we're going to add our numbers onto
     var acc = 0;

     for (var index = 0; index < arr.length; index++) {
        // don't return here, return is used to return from a function
        acc += arr[index];
     }
     // after adding all numbers, return the sum
     return acc
   }

   sum([1, 2, 3]); //6

但是有一些方法可以做到这一点,比如像Scott Marcus提到的Array.reduce()。