Pertanyaan yang sebelumnya dijawab di sini mengatakan bahwa ini adalah cara tercepat:
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
Dalam melakukan pembandingan pada browser saya, saya menemukan bahwa ini lebih dari 3 kali lebih lambat dari ini:
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
Keduanya menghasilkan output yang sama, tetapi saya merasa sulit untuk percaya bahwa versi kedua saya adalah cara tercepat yang mungkin, terutama karena orang mengatakan sebaliknya di sini.
Apakah ini kekhasan di browser saya (Chromium 6)? Atau ada cara yang lebih cepat?
EDIT: Untuk siapa pun yang peduli, saya memilih yang berikut (yang tampaknya paling cepat di setiap browser yang saya uji):
//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: Saya menemukan cara yang lebih cepat
// 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];
mungkin lebih cepat daripadaarr.push(nl[i]);
karena menghindari panggilan fungsi.