Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中添加数组元素_Javascript_Function_Loops_For Loop_Sum - Fatal编程技术网

在Javascript中添加数组元素

在Javascript中添加数组元素,javascript,function,loops,for-loop,sum,Javascript,Function,Loops,For Loop,Sum,为什么这段代码返回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 var arrToSu

为什么这段代码返回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
var arrToSum=[2,4,10];
函数数组(数组){
var结果=0;
for(var i=array[0];i
如果遵循循环逻辑,我将在将2添加到result变量后结束,因为nextI等于3,循环应该结束。请解释那里发生了什么。

您是从2(数组[0]的值)开始,而不是从0开始。改变

for (var i = array[0]; i < array.length; i++) {
for(var i=array[0];i

for(变量i=0;i
这就是为什么你应该熟悉javascript中的函数编程。
map
filter
reduce
是你的朋友。尤其是
map

尽量避免使用常规循环,因为它们更容易出错。在您的情况下,计数器变量
i
会出错

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

for循环中的工作方式:

for(var i=array[0];i

在循环中,这些是执行第一次迭代后的结果

第一次迭代;i=2

var i = array[0]; // i = 2;
result += array[i]; // result = 10;
array[i]
array[2]
它是10。因此,
结果是10

第二次迭代;i=3


array.length
是3,因为它有3个元素。条件
i
为false,代码中断循环,返回结果为10。

因为
i
2
运行到
2
,实际上只添加
arr[2]
10
)到
0
。我不清楚您打算用
var i=array[0]做什么;
。再扩展一点:“因为下一个
i
等于
3
”是的,您只添加了一个值,循环在一次迭代后停止,但由于
i
2
开始,您正在添加
arr[2]
,而不是
arr[0]
。顺便说一句,如果你想知道你的代码到底在做什么,设置一个断点,一步一步地检查代码并检查变量。因为
array[2]
是10
var i = array[0]; // i = 2;
result += array[i]; // result = 10;