पहले पूछे गए सवालों के जवाब में कहा गया था कि यह सबसे तेज़ तरीका था:
//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);
वे दोनों एक ही आउटपुट का उत्पादन करते हैं, लेकिन मुझे यह विश्वास करना मुश्किल है कि मेरा दूसरा संस्करण सबसे तेज़ संभव तरीका है, खासकर जब से लोगों ने अन्यथा यहां कहा है।
क्या यह मेरे ब्राउज़र में एक क्रोम है (क्रोमियम 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]);
क्योंकि यह फ़ंक्शन कॉल से बचता है।