遍历数组并用 JS 求和所有值
iterate over an array and sum up all values with JS
正如标题所说,我正在尝试总结使用 for 循环遍历数组。
你能给我一些关于我哪里出错的指示吗?我正在返回值 NaN。
var total = 0;
function sum(input) {
for (idx=0; idx<=input; idx++) {
total += input[idx];
}
return total;
}
您需要在函数中声明 total 并且还需要声明 idx。另一件事,而不是写 idx <= input.length
你必须写 idx <= input.length - 1
。由于最后一个索引将是未定义的。
尝试
function sum(input) {
total = 0;
for (var idx = 0; idx <= input.length - 1; idx++) {
total += input[idx];
}
return total;
}
变量总数未声明!
function sum(input) {
var total = 0;
for (idx=0; idx <= input.length; idx++) {
total += input[idx];
}
return total;
}
在现代浏览器中,您实际上不需要循环来执行此操作,您可以使用 Array.reduce 函数:
var sum = input.reduce(function(a,b){
return a+b;
}, 0);
导致 NaN
的问题是因为你的数组遍历数组直到结束,而不是从索引 0
到 input.length-1
试试这个:
http://jsfiddle.net/t9tfofxv/
var total = 0;
function sum(input) {
for (var idx=0; idx< input.length; idx++) {
total += input[idx];
}
return total;
}
var s=sum([1,2,3,4]);
alert(s);
在函数内部声明变量total,同样用input.length-1定义循环范围:
function sum(input) {
var total = 0;
for (idx=0; idx <= input.length-1; idx++) {
total += input[idx];
}
return total;
}
您将 input
用作整数和值数组。可能你的意思是 for( var idx = 0; idx < input.length; ++idx )...
.
正如标题所说,我正在尝试总结使用 for 循环遍历数组。 你能给我一些关于我哪里出错的指示吗?我正在返回值 NaN。
var total = 0;
function sum(input) {
for (idx=0; idx<=input; idx++) {
total += input[idx];
}
return total;
}
您需要在函数中声明 total 并且还需要声明 idx。另一件事,而不是写 idx <= input.length
你必须写 idx <= input.length - 1
。由于最后一个索引将是未定义的。
尝试
function sum(input) {
total = 0;
for (var idx = 0; idx <= input.length - 1; idx++) {
total += input[idx];
}
return total;
}
变量总数未声明!
function sum(input) {
var total = 0;
for (idx=0; idx <= input.length; idx++) {
total += input[idx];
}
return total;
}
在现代浏览器中,您实际上不需要循环来执行此操作,您可以使用 Array.reduce 函数:
var sum = input.reduce(function(a,b){
return a+b;
}, 0);
导致 NaN
的问题是因为你的数组遍历数组直到结束,而不是从索引 0
到 input.length-1
试试这个:
http://jsfiddle.net/t9tfofxv/
var total = 0;
function sum(input) {
for (var idx=0; idx< input.length; idx++) {
total += input[idx];
}
return total;
}
var s=sum([1,2,3,4]);
alert(s);
在函数内部声明变量total,同样用input.length-1定义循环范围:
function sum(input) {
var total = 0;
for (idx=0; idx <= input.length-1; idx++) {
total += input[idx];
}
return total;
}
您将 input
用作整数和值数组。可能你的意思是 for( var idx = 0; idx < input.length; ++idx )...
.