我正在试图弄清楚如何将javascript集合(即从getElementsByTagName / etc返回的内容)转换为普通数组,以便我可以对数据执行数组函数。
我正在寻找一个解决方案没有使用任何库,并且无法在网上找到任何优雅的解决方案。有没有人为这个问题写过一个好的函数函数?
答案 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)