我正在尝试创建一个对数组中所有数字求和的函数!我是JavaScript新手,需要有人指点我正确的方向!
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i];
}
}
sum([1, 2, 3]); //6
答案 0 :(得分:1)
使用 Array.reduce() :
function getSum(ary){
return ary.reduce(function(sum, value) {
return sum + value;
}, 0);
}
console.log(getSum([0, 1, 2, 3]));
&#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()。