1. 类数组/伪数组
使用document.getElementsByTagName()
与document.getElementsByClassName()
返回的是 HTMLCollection 对象,document.querySelectorAll()
返回的是 NodeList 对象。HTMLCollection 对象与 NodeList 对象 就是类数组/伪数组。它们像数组一样具有 length 属性,但并不是真正的数组,不具有数组的方法。常见的伪数组还有函数的参数对象 arguments。
将伪数组转换为数组的方法:
1)ES5 : slice()
1 | let div = document.getElementsByTagName('div') |
2)ES6: Array.from()
1 | // 我们首先自己定义一个为数组 |
返回值如下:
2. 构造数组
首先回顾一下 ES5 中构造数组的方法,我们知道可以使用字面量的方式与 new Array 的方式来创建数组。
1 | let arr1 = new Array(1,2) // 创建一个值为[1,2]的数组 |
使用 new 方法时,如果只传入一个参数,那么那个参数就是数组的长度。有什么办法可以创建值为 [3] 的数组吗?我们可以使用 ES6 中的Array.of()
方法。
1 | let arr = Array.of(1,2) // 创建一个值为[1,2]的数组 |
3. ES6 中替换数组元素
使用copyWithin()
方法替换数组元素。
1 | let arr = [1, 2, 3, 4, 5] |
4. ES6 中填充数组
使用fill()
方法填充数组。具体用法如下:
1 | let arr = new Array(3).fill(6) |
5. 检测数组中是否包含目标元素
在 ES5 中,使用IndexOf()
方法进行检测,若目标元素存在,则返回对应下标,否则返回 -1。在 ES6 中,使用includes()
方法进行检测,若目标元素存在则返回 true,否者返回 false。但是还有一点值得注意的是,这两个方法检测 NaN 的结果不同。
1 | let arr = [1, 2, 3, NaN] |