如何循环遍历不同索引的数组,同时仍然遍历整个数组?

时间:2015-02-10 11:18:49

标签: javascript

假设我有一个包含5个字符串的数组。如何在索引3处启动for循环并绕过并在索引2处结束?让我举个例子。

var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];

想从索引3(" farout")开始循环到数组的结尾(" awesome")然后继续在索引0到索引2循环。基本上开始一个数组在某些时候(除了索引0)并且仍然命中数组中的每个元素。

3 个答案:

答案 0 :(得分:16)

一种方法是使用正常的索引遍历数组,并使用模数运算符和偏移量来获取指向数组中正确位置的指针:

var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
var offset = 3;
for( var i=0; i < myArry.length; i++) {
    var pointer = (i + offset) % myArry.length;
    console.log(myArry[pointer]);
}

所以你的循环是每个元素的标准循环。您获取当前位置加上偏移量,并从中除以数组大小得到的余数。直到你到达数组的末尾,它将与i + offset相同。当你到达数组的末尾时,余数将为零,然后从那里开始。

Here's a fiddle

答案 1 :(得分:5)

这就是你需要的:

var start = 3;
for(var z=0;z<myArry.length;++z) {
  var idx = (z+start) % myArry.length;
  console.log(myArry[idx]);
}

答案 2 :(得分:1)

var startAt = 3;
for(var index = 0;index<myArry.length;index++){
  console.log(myArry[startAt]);
  if(startAt==myArry.length-1){
        startAt = -1;
  } 
  startAt++;
}