如何在javascript中将集合转换为数组

时间:2011-03-01 17:51:40

标签: javascript arrays collections

我正在试图弄清楚如何将javascript集合(即从getElementsByTagName / etc返回的内容)转换为普通数组,以便我可以对数据执行数组函数。

我正在寻找一个解决方案没有使用任何库,并且无法在网上找到任何优雅的解决方案。有没有人为这个问题写过一个好的函数函数?

4 个答案:

答案 0 :(得分:32)

你可以这样做:

var coll = document.getElementsByTagName('div');

var arr = Array.prototype.slice.call( coll, 0 );

编辑:正如@Chris Nielsen所述,这在IE 9之前的版本中失败了。最好的做一些功能测试,并创建一个可以处理任何功能的功能,或者只是在the (second) solution @brilliand中执行循环。

答案 1 :(得分:12)

在现代浏览器中,您可以使用Array.from" 从类似数组或可迭代的对象创建新的Array实例"

示例:将HTML集合转换为数组

const divs = document.getElementsByTagName('div');
const myArray = Array.from(divs); // [div, div, ...]

答案 2 :(得分:8)

将其复制到常规数组?

var coll = document.getElementsByTagName('div');
var arr = [];
for(var i in coll) arr[i] = coll[i];

自从我使用JavaScript以来已经有一段时间......你可能需要这样做:

var coll = document.getElementsByTagName('div');
var arr = [];
for(var i = 0; i < coll.length; i++) arr.push(coll[i]);

答案 3 :(得分:0)

您可以使用传播运算符:

var coll = document.getElementsByTagName('div');

var arr = [...coll];

Spread syntax