[英]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.