SORU
27 Mart 2012, Salı


Dizi ve öğe kaldırma döngü, döngü için bozmadan

Döngü şu var, ve ek kullandığımda() bir öğeyi kaldırmak için, ben bu 'saniye' tanımsız. Eğer tanımlanmamış ise kontrol edebilirim, ama muhtemelen bunu yapmak için daha şık bir yolu var hissediyorum. Arzu sadece bir öğeyi silmek ve yolumuza devam etmektir.

 for (i = 0, len = Auction.auctions.length; i < len; i  ) {
            auction = Auction.auctions[i];
            Auction.auctions[i]['seconds'] --;
            if (auction.seconds < 0) { 
                Auction.auctions.splice(i, 1);
            }

        }

Teşekkürler!

CEVAP
27 Mart 2012, Salı


Dizinin bir çıkarıldığında dizin üzerine atlamak anlamına gelir .splice(), ve .length kullanılmıyor senin önbelleğe alınan yaptığınızda yeniden dizine.

Bunu düzeltmek için, ya da .splice() ya da sadece yineleme bir ters sonra i eksiltme gerek kalmazdı

var i = Auction.auctions.length
while (i--) {
    ....
}

Bu şekilde yeniden indeksleme etkilemez sonraki madde yineleme, yana dizin oluşturma etkiler sadece eşyaların geçerli noktasına son Dizisi, bir sonraki madde tekerrür daha geçerli bir nokta.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MrChiCity3

    MrChiCity3

    14 NİSAN 2008
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010