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

  • cyriak

    cyriak

    29 Mart 2006
  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011
  • PCDIY

    PCDIY

    16 AĞUSTOS 2013