繁体   English   中英

添加数组元素Javascript

[英]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中的函数式编程的原因。 mapfilterreduce是您的朋友。 特别是map

尽量避免规则循环,因为它们更容易出错。 在您的情况下,您搞砸了计数器变量i

var sum = [2, 4, 10].reduce((a, b) => a + b, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM