2017-02-28 654 views
-8

我想用for循環來添加表格的元素。用for循環添加數組元素

這個問題似乎與<=在這裏:i < = array.length。當它是<然後它工作。

var array = []; 
 

 
for (var i = 1; i < 1000; i++) { 
 
    if (i % 3 === 0 || i % 5 === 0) { 
 
    array.push(i); 
 

 
    } 
 
}; 
 

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

 
console.log(sum);

+1

'問題似乎是在這裏:I <= array.length。當它<<那麼它工作.' –

+0

你得到什麼錯誤? –

+1

@Mike數組長度從0開始到'array.length-1'。不是從1到'array.length'。 – Ayush

回答

2

數組索引從0開始,一直持續到length-1。所以你想

for (var i = 0; i < array.length; i++) 
// ----------^----^ 
2

使用forEach函數可用的數組來做到這一點。

array.forEach(function(i) { 
    sum += i; 
}); 

由此您不必擔心循環的長度或終止條件。

+1

但您不必擔心瀏覽器兼容性 – mplungjan

+0

它在大多數瀏覽器(> IE9 ,> FF1.5 ...)更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Browser_compatibility – Abhishek

+0

我知道。 IE9 + - 我仍然必須支持IE8 – mplungjan

0

這個例子是有效的,因爲我把控制檯日誌放在for循環裏面,也看我把第二個變量的名字從i改爲j,請記住在js中只有塊範圍在函數內部。

var myArray = []; 
 

 

 
for (let i = 1; i < 1000; i++) { 
 
    if (i % 3 === 0 || i % 5 === 0) { 
 
    myArray.push(i); 
 
    } 
 
}; 
 

 

 

 
var sum = 0; 
 

 
for (let j = 1; j <= myArray.length; j++){ 
 
    sum += myArray[j]; 
 
    console.log(sum) 
 
};