2015-04-30 46 views
0
var months = ["January", "February", "March", "April", "May", "June", "July","August", "September", "October","November", "December"]; 
// For Loop 
for (var i = 0; i = months.slice(4, 8); i++) { 
alert(a); 

我試圖通過這個數組循環,並在5月到8月的特定範圍內提醒值。我似乎無法弄清楚這一點。謝謝!循環訪問數組並打印特定的值範圍?

+0

你覺得'.slice'返回什麼?它返回一個**數組**。如果'i'是一個數組,你究竟期望'i ++'做什麼? –

+0

好點。那麼,我正在學習。 –

回答

1

for循環,指定開始指數(月= 4)和結束指數(月= 7),並使用此模式:

var months = ["January", "February", "March", "April", "May", "June", "July","August", "September", "October","November", "December"]; 
// For Loop 
for (var i = 4; i <= 7; i++) { 
    alert(months[i]); 
} 
0

您需要切片陣列存儲在一個臨時變量並循環。

例子:https://jsfiddle.net/epkkstqz/1/

var months = ["January", "February", "March", "April", "May", "June", "July","August", "September", "October","November", "December"]; 

for (var i = 0, slice = months.slice(4, 8); i < slice.length; i++) { 
    alert(slice[i]); 
} 
1

如果你只是想那些項目,你知道數組的內容,您有幾種選擇:

var months = ["January", "February", "March", "April", 
       "May", "June", "July","August", "September", 
       "October","November", "December"]; 

// For Loop 
for (var i = 4; i <= 7; i++) { 
    alert(months[i]); 
} 

沒有必要同時使用切for循環。你已經知道你感興趣的是哪些指數,所以你可以遍歷該範圍。一般而言,這也是這些選擇中最有效的。

// Slice and for-loop 
var selected = months.slice(4,7); 
for (var i = 0; i < selected.length; i++) { 
    alert(selected[i]); 
} 

你可以先切片,然後在整個(新)陣列的for循環迭代。一般來說,你不會這樣做。但是,如果縮小數組的條件更加複雜,那麼可能有理由先創建數組然後再遍歷它,所以這裏是一個乾淨的例子。

// Slice and forEach 
months.slice(4,7).forEach(function(x) {alert(x);}); 

這將是我個人的選擇,因爲它很簡潔。它與切片和循環示例(性能稍低,但不是您需要關注的方式)實際上是一樣的,只是使用Array.prototype.forEach()而不是單獨的for循環表示。