Javascript 对数组函数中的所有数字求和,但不返回和
我正在尝试创建一个函数,将数组中的所有数字相加!我是JavaScript新手,需要有人给我指出正确的方向Javascript 对数组函数中的所有数字求和,但不返回和,javascript,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 函数和(arr){ var i=0; 对于(var指数=0;指数
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i];
}
}
sum([1, 2, 3]); //6
函数和(arr){
var i=0;
对于(var指数=0;指数
使用进行以下操作:
函数getSum(ari){
返回ary.reduce(函数(和,值){
返回和+值;
}, 0);
}
log(getSum([0,1,2,3])代码>使用进行以下操作:
函数getSum(ari){
返回ary.reduce(函数(和,值){
返回和+值;
}, 0);
}
log(getSum([0,1,2,3])代码>以说明代码错误的位置
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
}
}
正如另一个答案所指出的,一个可能更好的替代方法是使用array reduce函数——但是该答案中的代码并不是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来说明代码的错误之处
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
}
}
正如另一个答案所指出的,一个可能更好的替代方法是使用array reduce函数——但是该答案中的代码并不是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相加
当然,这不会对性能造成影响,但是为什么不正确使用内置函数呢:代码中有很多基本问题 您需要一个单独的变量来累加结果。代码正在写入for循环的索引变量。这是错误的,原因有很多 您还可以在循环的第一次迭代之后返回 假设您想要使用for循环(这不是最少的代码量)
函数和(arr){
var总和=0;
对于(var指数=0;指数
代码中有很多基本问题
您需要一个单独的变量来累加结果。代码正在写入for循环的索引变量。这是错误的,原因有很多
您还可以在循环的第一次迭代之后返回
假设您想要使用for循环(这不是最少的代码量)
函数和(arr){
var总和=0;
对于(var指数=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
函数和(arr){
//这是我们要添加数字的变量
var acc=0;
对于(var指数=0;指数
但是有一些内置的方法可以做到这一点,如Scott Marcus提到的Array.reduce()。下面是如何让函数工作的:
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
function Sum(arr) {
var sum = 0;
for (var index = 0; index < arr.length; index++) {
sum += arr[index];
}
return index;
}
Sum([1, 2, 3]); //6
函数和(arr){
//这是我们要添加数字的变量
var acc=0;
对于(var指数=0;指数
但是有一些内置的方法可以做到这一点,如Scott Marcus提到的Array.reduce(){
function Sum(arr) {
var sum = 0;
for (var index = 0; index < arr.length; index++) {
sum += arr[index];
}
return index;
}
Sum([1, 2, 3]); //6
var总和=0;
对于(var指数=0;指数函数和(arr){
var总和=0;
对于(var指数=0;指数
Return立即退出函数。您的代码永远不会求和值。您的代码中的“i”是什么!?!你要做什么
return
退出函数,而不是循环。。另外,您将添加到索引
,而不是i
,并使用i
作为索引
,该索引在0
返回时退出函数,而不是循环。。另外,您正在添加到索引
而不是i
,并使用i
作为索引
,该索引位于0
谢谢!!我必须编写一个函数,使用一个参数(arr-一个整数数组)@MarioGomez,然后将代码放入函数中。这是正确答案“这是正确答案”。。。是的,除了它没有显示原始代码哪里出错之外,简单地给出一个使用reduce
的答案,而不至少解释一下问题中的代码失败的原因是没有任何价值的-此外,这实际上不是reduce的最佳用法…谢谢!!我必须编写一个函数,使用一个参数(arr-一个整数数组)@MarioGomez,然后将代码放入函数中。这是正确答案“这是正确答案”。。。是的,除了它没有显示原始代码哪里出了问题外,简单地给出一个使用reduce
的答案,而不至少解释一下问题中的代码失败的原因是没有任何价值的——此外,这实际上并不是reduce的最佳用法……谢谢@jaromanda x!!我是Javascript的乞丐!你的解释很有道理!“但是为什么不正确地使用内置函数呢?”像我这样使用函数并不是不恰当的。顺便说一句,它直接来自MDN。对不起,“不恰当”太苛刻了@ScottMar