开发者社区> 问答> 正文

将JavaScript NodeList转换为数组的最快方法?

先前在这里回答的问题说这是最快的方法:

//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); 它们都产生相同的输出,但是我很难相信我的第二个版本是最快的方法,特别是因为人们在这里另有说明。

这是我的浏览器(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]));

展开
收起
保持可爱mmm 2020-01-16 15:34:46 457 0
1 条回答
写回答
取消 提交回答
  • 第二个在某些浏览器中往往会更快,但要点是您必须使用它,因为第一个不是跨浏览器。即使他们时代变迁

    @kangax( IE 9预览)

    Array.prototype.slice现在可以将某些主机对象(例如,NodeList的)转换为数组-大多数现代浏览器已经能够执行此操作很长时间了。

    例:

    Array.prototype.slice.call(document.childNodes); 问题来源于stack overflow

    2020-01-16 15:35:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript函数 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载