For循环不遍历数组(JavaScript)
For loop not iterating through array (JavaScript)
我用for循环迭代数组,将数组中的值相加,但它只返回第一个值。我收到了2号警报,而不是预期的2014年。
我做错了什么?
在此处输入链接描述
JavaScript
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (i = 0; i < array.length; i++) {
answer += array[i];
return answer;
}
}
var response = arraySum(array);
alert(response);
});
因为您将return语句放在循环中,所以当它第一次命中此return语句时,它将以值answer退出函数(即2)。你真正想要的是:
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (var i = 0; i < array.length; i++) {
answer += array[i];
// DON'T return here
}
// Return HERE
return answer;
}
var response = arraySum(array);
alert(response);
});
如果这没有意义,可以这样想:
你想执行一个动作八次,当它完成后,你想做一些有结果的事情。在这种情况下,你要加八次数字,然后提醒总数。不幸的是,如果你在循环中说return,它会在每一个操作(添加)之后尝试"做点什么"(return)。因为它试图在每个操作之后返回,所以循环实际上在第一个操作之后中断,并且永远无法添加最后七个数字。如果你想观察这个过程的进展,你实际上可以把警报放在你的return语句曾经所在的地方,并观察它在每次迭代后被击中(从而收到八个警报)。
顺便说一句,您还应该用var i
定义"i",因为您可以通过忘记"var"来处理范围。我在上面的代码中也修正了这个错误。感谢Ryan引起大家的注意。
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (i = 0; i < array.length; i++) {
answer += array[i];
}
return answer;
}
var response = arraySum(array);
alert(response);
});
您正在返回循环内部的值。当循环第一次执行时,它将第一个数组值添加到answer,然后返回answer。此时,您的函数已完成运行。
如果您移动返回答案;在循环下面,这将按预期工作。
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (i = 0; i < array.length; i++) {
answer += array[i];
}
return answer;
}
var response = arraySum(array);
alert(response);
});
不确定这是否是某种测试:)
FOR循环中有一个return语句。因此循环返回计算(0+array[0])后的结果
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (i = 0; i < array.length; i++) {
answer += array[i];
//return answer; remove this line
}
}
var response = arraySum(array);
alert(response);
});
您可以使用以下内容:
$.each(array, function(index, value) {
answer += value;
});
return answer;
因为jquery有一个内置的foreach函数。
除了大家已经说过的,当您将return移到循环之外时,虽然函数仍然可以正常运行,但我会更改在函数和循环中调用数组的方式。
您的数组名为"array"。您在函数参数中将其调用为"arr",因此我认为在函数中的后续for循环中,您也应该将数组调用标记为"arr"。无论哪种方式,我都能在2014年得到正确的答案,但我认为在整个执行过程中保持函数数组变量的标题不变是最好的选择。
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (i = 0; i < arr.length; i++) {
answer += arr[i];
}
return answer;
}
var response = arraySum(array);
console.log(response);
});
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)