【问题标题】:Loop through an array and print a specific range of values?循环遍历数组并打印特定范围的值?
【发布时间】:2015-07-10 19:47:24
【问题描述】:
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 月。我似乎无法弄清楚这一点。谢谢!

【问题讨论】:

  • 您认为.slice 会返回什么?它返回一个数组。如果i 是一个数组,您究竟希望i++ 做什么?
  • 好点。嗯,我正在学习。

标签: javascript arrays list for-loop


【解决方案1】:

对于 for 循环,指定起始索引 (May = 4) 和结束索引 (August = 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]);
}

【讨论】:

    【解决方案2】:

    如果您只想要这些项目,并且您知道数组的内容,那么您有几个选择:

    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);});
    

    这是我个人的选择,因为它很简洁。它实际上与 slice-and-loop 示例相同(性能稍差,但不是您可能需要关心的方式),只是使用 Array.prototype.forEach() 而不是单独的 for 循环表示。

    【讨论】:

      【解决方案3】:

      您需要将切片数组存储在一个临时变量中并对其进行循环。

      示例: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]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 2015-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-17
        相关资源
        最近更新 更多