小编典典

将 HTMLCollection 转换为数组的最有效方法

all

除了遍历所述集合的内容并手动将每个项目推入数组之外,是否有更有效的方法将 HTMLCollection 转换为数组?


阅读 218

收藏
2022-03-09

共1个答案

小编典典

var arr = Array.prototype.slice.call( htmlCollection )

使用“本机”代码将具有相同的效果。

编辑

由于这得到了很多意见,请注意(根据@oriol 的评论)以下更简洁的表达式实际上是 等效 的:

var arr = [].slice.call(htmlCollection);

但请注意,根据@JussiR
的评论,与“详细”形式不同,它确实在该过程中创建了一个空的、未使用的且确实不可用的数组实例。编译器对此做了什么超出了程序员的理解范围。

编辑

从 ECMAScript 2015 (ES 6) 开始,还有 Array.from

var arr = Array.from(htmlCollection);

编辑

ECMAScript 2015 还提供了扩展运算符,它在功能上等同于Array.from(尽管注意Array.from支持映射函数作为第二个参数)。

var arr = [...htmlCollection];

我已经确认上述两种方法都适用于NodeList.

上述方法的性能比较:http: //jsben.ch/h2IFA

2022-03-09