以前にここで回答された質問は、これが最も速い方法であると述べました:
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
私のブラウザーでのベンチマークでは、これよりも3倍以上遅いことがわかりました。
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
どちらも同じ出力を生成しますが、特にここで他の人が別の言い方をしているので、私の2番目のバージョンが最速の方法であるとは信じられません。
これは私のブラウザー(Chromium 6)の癖ですか?またはより速い方法はありますか?
編集:気にかける人のために、私は以下に落ち着きました(これは私がテストしたすべてのブラウザで最も速いようです):
//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:私はさらに速い方法を見つけました
// 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]);
関数呼び出しを回避するため、よりも高速になる場合があります。