Déjà répondu à des questions posées ici a dit que c'était le moyen le plus rapide:
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
Dans l'analyse comparative sur mon navigateur, j'ai trouvé que c'est plus de 3 fois plus lent que celui-ci:
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
Ils ont tous les deux donnent le même résultat, mais j'ai du mal à croire que mon deuxième version est la méthode la plus rapide, surtout depuis que les gens ont dit le contraire ici.
Est-ce un caprice de mon navigateur (Chrome 6)? Ou est-il un moyen plus rapide?
EDIT: Pour quelqu'un qui se soucie, je me suis installé sur la suite (ce qui semble être le plus rapide dans tous les navigateurs que j'ai testé):
//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 plus rapide
// nl is the nodelist
var arr = [];
for(var i = nl.length; i--; arr.unshift(nl[i]));