waj*_*jiw 23 javascript arrays collections
我试图找出如何将javascript集合(即从getElementsByTagName/etc返回的东西)转换为普通数组,以便我可以对数据执行数组函数.
我正在寻找一种不使用任何库的解决方案,并且无法在网上找到任何优雅的解决方案.有谁为这个问题写了一个好的util函数?
use*_*716 34
你可以这样做:
var coll = document.getElementsByTagName('div');
var arr = Array.prototype.slice.call( coll, 0 );
Run Code Online (Sandbox Code Playgroud)
编辑:正如@Chris Nielsen所说,这在IE 9之前的失败.最好的做一些功能测试,并创建一个可以处理任何功能的功能,或者只是像@brilliand 的(第二个)解决方案那样进行循环.
sqr*_*ren 14
在现代浏览器中,您可以使用Array.from
" 从类似数组或可迭代对象创建新数组实例 "
示例:将HTML集合转换为数组
const divs = document.getElementsByTagName('div');
const myArray = Array.from(divs); // [div, div, ...]
Run Code Online (Sandbox Code Playgroud)
将它复制到常规数组?
var coll = document.getElementsByTagName('div');
var arr = [];
for(var i in coll) arr[i] = coll[i];
Run Code Online (Sandbox Code Playgroud)
我使用JavaScript已经有一段时间...你可能需要这个:
var coll = document.getElementsByTagName('div');
var arr = [];
for(var i = 0; i < coll.length; i++) arr.push(coll[i]);
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用扩展运算符:
var coll = document.getElementsByTagName('div');
var arr = [...coll];
Run Code Online (Sandbox Code Playgroud)