假设我有一个5个字符串的数组。我怎样才能在索引3开始一个for循环,并在索引2处结束?让我举个例子。如何在循环遍历整个数组的同时循环遍历从不同索引开始的数组?
var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
想在索引3(“farout”)循环通过对阵列的端部开始(“真棒”),然后继续在索引0,通过索引2循环基本上开始在某个点的阵列比(其他索引0)并且仍然击中数组中的每个元素。
假设我有一个5个字符串的数组。我怎样才能在索引3开始一个for循环,并在索引2处结束?让我举个例子。如何在循环遍历整个数组的同时循环遍历从不同索引开始的数组?
var myArry = ["cool", "gnarly", "rad", "farout", "awesome"];
想在索引3(“farout”)循环通过对阵列的端部开始(“真棒”),然后继续在索引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相同。当你到达数组的末尾时,余数将为零,然后从那里开始。
OP问题的偏移量应为3。 – k0pernikus 2015-02-10 11:29:06
谢谢,作品像一个魅力。我知道如何使用一系列||来做到这一点在一个如果,但不好看,不能模块化。您的解决方案很好。在Google上找不到关于此的任何内容。 Thanx – dragonore 2015-02-10 11:29:58
这里有您需要什么:
var start = 3;
for(var z=0;z<myArry.length;++z) {
var idx = (z+start) % myArry.length;
console.log(myArry[idx]);
}
甚至没有想过使用modulas。工作正常。 – dragonore 2015-02-10 11:32:44
var startAt = 3;
for(var index = 0;index<myArry.length;index++){
console.log(myArry[startAt]);
if(startAt==myArry.length-1){
startAt = -1;
}
startAt++;
}
是的,我知道,我需要一个For循环,是的,我知道该怎么做for循环中,我只是不知道如何设置它在我问的这样一个问题的方式 – dragonore 2015-02-10 11:19:58
我可以问你为什么要这样做吗? - 如果你击中阵列中的每一个元素 - 为什么这很重要? – 2015-02-10 11:23:14
那么我有一个我正在为休闲工作的二十一点游戏。我需要能够做到这一点,以便我可以替换重复的牌。我将重复值存储在一个数组中,然后我需要遍历它们。由于数组是动态的,所以有时我必须从索引3或4或1开始,或者其他什么。感谢您询问 – dragonore 2015-02-10 11:26:50