[英]Adding array elements Javascript
为什么这段代码返回10而不是2?
var arrToSum = [2, 4, 10];
function sumArray(array) {
var result = 0;
for (var i = array[0]; i < array.length; i++) {
result += array[i];
}
return result;
}
sumArray(arrToSum);
// function returns 10
如果遵循循环逻辑,我将在结果变量加2之后结束,因为下一个i等于3并且循环应结束。 请解释那里发生了什么。
事情如何在for循环中进行:
for (var i = array[0]; i < array.length; i++) {
在循环中,这些是执行第一个Iteration之后的结果;
第一次迭代; 我= 2
var i = array[0]; // i = 2;
result += array[i]; // result = 10;
array[i]
是array[2]
,它是10。因此, result
是10。
第二次迭代; 我= 3
array.length
为3,因为它具有3个元素。 条件i < array.length;
为假,代码中断,返回结果为10。
您从2(数组[0]的值)开始,而不是从0开始。
for (var i = array[0]; i < array.length; i++) {
至
for (var i = 0; i < array.length; i++) {
这就是为什么您应该熟悉javascript中的函数式编程的原因。 map
, filter
, reduce
是您的朋友。 特别是map
。
尽量避免规则循环,因为它们更容易出错。 在您的情况下,您搞砸了计数器变量i
。
var sum = [2, 4, 10].reduce((a, b) => a + b, 0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.