2015-04-30 45 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循环表示。