将HTMLCollection对象转为数组

阿里云教程4个月前发布
23 0 0

通过document.getElementsByTagName( li )获取到的dom元素list是个伪数组htmlCollection ,无法直接使用数组的forEach等方法,可用下面一些方法转换:

1、ES5转真数组:

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

2、隐式迭代并创建一个新的数组对象,这会消耗额外的资源

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

这适用于所有浏览器,包括早期的 IE 版本。

let arr = [];
[].push.apply(arr, htmlCollection);

3、
ES6方法,还有Array.from :

let arr = Array.from(htmlCollection);

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

let arr = [...htmlCollection];

对于 IE7 及更早版本等旧浏览器,您只需使用兼容功能,例如:

function toArray(x) {
    for(let i = 0, a = []; i < x.length; i++)
        a.push(x[i]);

    return a
}

© 版权声明

相关文章

暂无评论

none
暂无评论...