我正试图创建一个函数来对数组中的所有数进行求和!我是JavaScript新手,需要有人指引我朝着正确的方向发展!总结数组函数中的所有数字不返回总和
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i];
}
}
sum([1, 2, 3]); //6
我正试图创建一个函数来对数组中的所有数进行求和!我是JavaScript新手,需要有人指引我朝着正确的方向发展!总结数组函数中的所有数字不返回总和
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
return index += arr[i];
}
}
sum([1, 2, 3]); //6
使用Array.reduce()为:
function getSum(ary){
return ary.reduce(function(sum, value) {
return sum + value;
}, 0);
}
console.log(getSum([0, 1, 2, 3]));
谢谢!我必须写作一个函数,使用一个参数(ARR - 一个整数数组) –
@MarioGomez然后把代码放在一个函数中。这是正确的答案 – baao
@MarioGomez好的,那么更新的答案如何? –
,说明您的代码是错误的
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
}
}
的评论说,在循环后将退出你的函数在第一次迭代
也,你加入index
,这应该是索引到数组,你要添加到i
,然后return i
所以,代码应该是
function sum(arr) {
var i = 0;
for (var index = 0; index < arr.length; index++) {
i += arr[index];
}
return i;
}
作为另一个答案指出,一个可能是更好的替代方法是使用数组减少功能 - 但是,在这个问题的答案的代码是不是“最好”的使用减少
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
谢谢@ jaromanda x !!我在Javascript中成为begginer!你的解释很有意义! –
*“但为什么不能正确使用内置功能”*使用我所具有的功能并非不恰当。顺便说一下,它直接来自MDN。 –
对不起,“不适当”太苛刻了@ScottMarcus - 后面的例子'[0,1,2,3,4] .reduce((prev,curr)=> prev + curr);'显示没有初始值value:p –
许多与代码有关的基本问题。
您需要一个单独的变量来累计结果。您的代码正在写入for循环的索引变量。这有几个原因是错误的。
您也会在循环的第一次迭代之后返回。
假设你想使用一个for循环(这是不是最少的代码量),
function sum(arr) {
var sum = 0;
for (var index = 0; index < arr.length; index++) {
sum += arr[index];
}
return sum;
}
这里是你如何让你的函数工作:
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
但有建在像这样做的方式,像像斯科特马库斯提到的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
返回立即退出函数。你的代码永远不会总结数值。你的代码中'我'是什么!?!什么指标做!?
'无论如何,使用大写字母作为函数名称的第一个字符** ** no ** - “约定”使用大写字母作为“类别”名称......也就是应该被调用的函数与'新'关键字 - 这只是一个约定 –
也许你是对的,我是C程序员,所以功能意味着其他在我的pov。 – BlackMB
'C'是否具有函数的个案约定?我知道这不是一个“规则”,考虑到“C”程序的入口点是“main”而不是“Main”:p –
'return'退出函数,而不是循环..此外,您将添加到'index'而不是'i',并且使用'i'作为索引'',这是'0'处的stcuk –