Burada daha önce cevaplanan sorular bunun en hızlı yol olduğunu söyledi:
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
Tarayıcımdaki karşılaştırmada, bundan 3 kat daha yavaş olduğunu gördüm:
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
Her ikisi de aynı çıktıyı üretiyorlar, ancak ikinci sürümümün mümkün olan en hızlı yol olduğuna inanmakta zorlanıyorum, özellikle insanlar burada aksini söylediğinden.
Bu tarayıcımda bir sorun mu (Chromium 6)? Yoksa daha hızlı bir yol var mı?
EDIT: önemseyen herkes için aşağıdakilere karar verdim (test ettiğim her tarayıcıda en 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++]));
EDIT2: Daha da hızlı bir yol buldum
// nl is the nodelist
var arr = [];
for(var i = nl.length; i--; arr.unshift(nl[i]));
var i = nl.length, arr = new Array(i); for(; i--; arr[i] = nl[i]);
arr[arr.length] = nl[i];
arr.push(nl[i]);
işlev çağrısından kaçındığından daha hızlı olabilir .