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

  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • stewmurray47

    stewmurray47

    1 Kasım 2006
  • The White House

    The White Ho

    21 Ocak 2006