将HTMLCollection对象转为数组

通过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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容