在Javascript中添加数组元素
为什么这段代码返回10而不是2在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
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;