ES6 数组扩展
数组扩展
Array.from()
用于将类似数组的对象和可遍历的对象(部署了Iterator接口)转换为数组。例子如下:
1 |
|
实际应用中,常见的类似数组对象是DOM操作返回的NodeList集合以及函数内部arguments对象。Array.from都可以将它们转为真正的数组。
1 |
|
除此之外,扩展运算符...
也可以将某些数据结构转换为数组(注:扩展运算符跟Java中的多参数表达式功能类似)。扩展运算符背地也是调用Iterator接口,如果对象没有部署这个接口,则无法完成转换;
1 |
|
Array.of()
Array.of用于将一组值,转换为数组;这个方法的主要目的是弥补Array()方法的不足。因为参数个数的不同,会导致Array()的行为有差异。
1 |
|
数组实例的copyWithin()
在当前数组的内部,将指定位置的成员复制到其他位置,然后返回当前数组。也就是说该方法会修改当前数组。
1 |
|
数组实例find()和findIndex()
find()
方法用于找出第一个符合条件的数组成员。其第一个参数是回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员。如果没找到符合条件的成员则返回undefined
。
findIndex()
方法的作用与find()
方法非常类似。这里就不再赘述。可以看出新增的两个方法极大地弥补了indexOf()
方法的不足。
1 |
|
数组实例fill()
fill()
可以使用给定值来填充数组,因此在初始化数组元素的过程中非常方便。
初次之外,fill()还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置
1 |
|
数组实例entries(), keys()和values()
ES6新增了上述的3个方法,英语遍历数组。它们都是返回一个遍历器对象,可以使用for...of
循环遍历,唯一区别是keys()
是对键名的遍历、values()
是对键值得遍历,entries()
是对键值对的遍历。
1 |
|
数组实例includes()
Array.prototype.includes
方法返回一个布尔值,表示某个数组是否是否已经包含给定的值,与字符串的includes
方法类似。该方法属于ES7,但是Babel转码器已经支持。
1 |
|
该方法还有第二个参数表示搜索的起始位置,默认为0 ,如果为负数则表示倒数位置。
数组的空位
数组的某一个位置没有任何值。比如Array
构造函数返回的数组都是空位。注意:空位不等于undefined
1 |
|
在ES6中会明确将空位转换为undefined
, copyWithin()
会将空位一起拷贝,fill()
会将空位当做正常位置,循环也会迭代空位。总之ES6中会保留空位。由于空位的处理规则不统一,因此应当避免出现空位。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!