Les questions précédemment répondues ici indiquaient que c'était le moyen le plus rapide:
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
En comparant sur mon navigateur, j'ai constaté qu'il est plus de 3 fois plus lent que cela:
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
Ils produisent tous deux la même sortie, mais j'ai du mal à croire que ma deuxième version est le moyen le plus rapide possible, d'autant plus que les gens ont dit le contraire ici.
Est-ce une bizarrerie dans mon navigateur (Chromium 6)? Ou existe-t-il un moyen plus rapide?
EDIT: Pour tous ceux qui s'en soucient, je me suis installé sur ce qui suit (qui semble être le plus rapide dans tous les navigateurs que j'ai testés):
//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: J'ai trouvé un moyen encore plus rapide
// 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];
peut être plus rapide quearr.push(nl[i]);
cela car il évite un appel de fonction.