假設我有一個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