SORU
7 Temmuz 2010, ÇARŞAMBA


En hızlı Dizi için JavaScript NodeList dönüştürmek için yolu?

Daha önce cevaplanmış sorular burada bu en hızlı yol olduğunu söyledi:

//nl is a NodeList
var arr = Array.prototype.slice.call(nl);

Tarayıcımda kıyaslama bu oranla 3 kat daha yavaş olduğunu fark ettim:

var arr = [];
for(var i = 0, n; n = nl[i];   i) arr.push(n);

İkisi de aynı çıktıyı üretmek, ama özellikle insanlar aksi takdirde burada söylediğim beri çok zor benim ikinci sürümü mümkün olan en hızlı yol olduğuna bile inanamıyorum.

Bu benim tarayıcı (Krom 6) bir cilvesi midir? Ya da daha hızlı bir yolu var mı?

EDİT: ilgilenen kişiler İçin, aşağıdaki yerleşmiş test ettim her tarayıcıda hızlı gibi görünüyor)

//nl is a NodeList
var l = []; // Will hold the array of Node's
for(var i = 0, ll = nl.length; i != ll; l.push(nl[i  ]));

EDİT2: daha hızlı bir yol buldum

// nl is the nodelist
var arr = [];
for(var i = nl.length; i--; arr.unshift(nl[i]));

CEVAP
7 Temmuz 2010, ÇARŞAMBA


İkincisi bazı tarayıcılarda daha hızlı olma eğilimindedir, ama asıl mesele, ilki sadece çapraz tarayıcı olmadığı için bunu kullanmak zorunda. Bu Kez Onlar bir Hareket olsa bile'

@kangax(IE 9 önizleme)

Dizi.prototip.dilimşimdi dönüştürebilirsiniz bazı ana nesneleri (örneğin NodeList) diziler için bir şey büyük bir çoğunluğunun modern tarayıcılar yapmak mümkün olmuştur oldukça uzun bir süredir.

Örnek:

Array.prototype.slice.call(document.childNodes);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • Gali B

    Gali B

    1 EYLÜL 2006