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

dra*_*ore 10 javascript

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

var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*ton 18

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

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]);
}
Run Code Online (Sandbox Code Playgroud)

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

这是一个小提琴.


Kok*_*zzu 5

这就是你需要的:

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