假设我有一个由5个字符串组成的数组。如何从索引3开始循环并最终到达索引2?让我举个例子。
var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
想要从索引3("farout")开始循环直到数组的末尾("awesome"),然后继续从索引0循环到索引2。 基本上从某个点(而不是索引0)开始一个数组,并仍然遍历数组中的每个元素。
假设我有一个由5个字符串组成的数组。如何从索引3开始循环并最终到达索引2?让我举个例子。
var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
想要从索引3("farout")开始循环直到数组的末尾("awesome"),然后继续从索引0循环到索引2。 基本上从某个点(而不是索引0)开始一个数组,并仍然遍历数组中的每个元素。
一种方法是像平常一样使用索引循环数组,然后使用模运算符与偏移量一起使用,以获取指向数组中正确位置的指针:
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相同。当你到达数组末尾时,余数将为零,从那里开始继续。
以下是您需要的内容:
var start = 3;
for(var z=0;z<myArry.length;++z) {
var idx = (z+start) % myArry.length;
console.log(myArry[idx]);
}
var startAt = 3;
for(var index = 0;index<myArry.length;index++){
console.log(myArry[startAt]);
if(startAt==myArry.length-1){
startAt = -1;
}
startAt++;
}