假设我有一个包含5个字符串的数组。如何在索引3处启动for循环并绕过并在索引2处结束?让我举个例子。
var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
想从索引3(" farout")开始循环到数组的结尾(" awesome")然后继续在索引0到索引2循环。基本上开始一个数组在某些时候(除了索引0)并且仍然命中数组中的每个元素。
答案 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相同。当你到达数组的末尾时,余数将为零,然后从那里开始。
答案 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++;
}