2015-02-10 12 views
7

Farzedelim ki 5 diziden oluşan bir dizi vardı. Endeks 3'te for döngüsünü nasıl başlatabilirim ve indeks 2'de nasıl giderim ve bitirebilirim? Bir örnek vereyim.Dizinin tamamı boyunca devam ederken farklı dizinden başlayan diziler arasında nasıl döngü yapılır?

var myArry = ["cool", "gnarly", "rad", "farout", "awesome"]; 

sonra Temelde daha (başka bir noktada bir dizi başlayan endeks 2. içinden 0 dizininde döngü devam ("müthiş") dizinin sonuna kadar endeks 3 ("farout") döngü başlamak ister misiniz dizin 0) ve hala dizideki her öğeye çarptı.

+0

Biliyorum Evet, döngü için bir ihtiyaç ve ben döngü için bir nasıl yapılacağını biliyorum evet, ben sadece nasıl kurulacağını bilmiyorum: Burada – dragonore

+0

Bunu neden yapmak isteyebileceğinizi sorabilir miyim? - dizideki her öğeye isabet ediyorsanız - neden önemlidir? –

+1

Eh ben eğlence için üzerinde çalışıyorum bir blackjack oyunu var. Bunu yapabilmem gerek, böylece tekrarlanan kartları değiştirebilirim. Yineleme değerlerini bir dizide saklıyorum, daha sonra bunların arasında dönmem gerekiyor. Dizi dinamik olduğu için, bazen 3 veya 4 veya 1 dizininde ya da her neyse başlamalıyım. – dragonore

cevap

13

bir yolu, normal olarak bir dizin kullanılarak diziye döngü olduğunu ve dizideki doğru yere bir işaretçi almak için, lütfen ofset ile modül operatörünü kullanın:

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]); 
} 

Yani döngü Her elemandan standart bir döngü. Geçerli konumu ve artı ofseti alırsınız ve kalan kısmı dizinin boyutuna bölünür. Dizinin sonuna ulaşana kadar, i + ofset ile aynı olacak. Dizinin sonuna ulaştığınızda, kalan sıfır olacaktır ve oradan gidin.

Here's a fiddle.

var start = 3; 
for(var z=0;z<myArry.length;++z) { 
    var idx = (z+start) % myArry.length; 
    console.log(myArry[idx]); 
} 
+1

sorduğunuz için teşekkür ederiz. OP sorusu için ofset 3 olmalıdır. – k0pernikus

+1

Teşekkürler, bir çekicilik gibi çalışır. Bunu bir dizi kullanarak nasıl yapacağımı biliyordum || eğer bir, ama bu iyi görünmüyor ve modülerleştirilemez. Çözümünüz harika çalışıyor. Google'da bu konuda hiçbir şey bulunamadı. Thanx – dragonore

5

neye ihtiyacınız var böyle bir soruyu soruyorum
+1

Modüller kullanmayı düşünmüyordu bile. İyi çalışıyor. – dragonore

1
var startAt = 3; 
for(var index = 0;index<myArry.length;index++){ 
    console.log(myArry[startAt]); 
    if(startAt==myArry.length-1){ 
     startAt = -1; 
    } 
    startAt++; 
} 
İlgili konular