如何将类数组转换为真正的数组

开发过程中,有很多时候获取到的是类似数组的对象。比如元素的集合(elementcollection,nodeList,以及今天开发时发现classList也是类数组)。有时我们需要类数组去调用数组的方法,怎么办?

 

一、遍历类数组,依次将元素放入一个空数组。

类数组本身虽然不是数组,但是有interator接口,所以可遍历。(interator指可遍历、可迭代)

例如:

如何将类数组转换为真正的数组_第1张图片

页面有三个div,divEle是一个nodeList,即元素集合,并非纯数组。可以用let of遍历。然后依次放入一个空数组。这样divArr就是div元素集合的数组。

二、用扩展运算符或者Array.from()方法转换

es6新增了扩展运算符(...)以及Array.from()方法,可以直接将类数组转换为真正的数组。

关于扩展运算符以及Array.from()的详细用法,可参考阮一峰老师的《es6标准入门》一书。

如何将类数组转换为真正的数组_第2张图片

扩展运算符的使用前提,是对象有Interator接口,这和let of的前提是一样的。但是用扩展运算符和Array.from()无疑简洁很多。

需要特别指出的是,Array.from()方法可以将任意具有length属性的对象转换成真正的数组(类数组有length属性)。具体转换形式可参考阮一峰老师的《es6标准入门》一书。

三、利用apply展开

apply方法的第二个参数是数组,也可以是类数组,在调用的时候会将第二个参数依次展开。

如何将类数组转换为真正的数组_第3张图片

过程类似扩展运算符。

以上三种方法推荐扩展运算符,方式非常的简洁。

你可能感兴趣的:(原生js)