数组的扩展
扩展运算符(...
)
- 定义:将数组转为用逗号分隔的参数序列,注意:
- 扩展运算符可与函数参数结合使用,不区分位置
- 扩展运算符后面可放置表达式
- 跟一个空数组不起效果
- 扩展运算符若外面有括号,仅当该括号为函数调用的括号时,才不会报错
- 运用:
- 替代函数的apply方法
- 数组的浅复制
- 数组的合并:
[...arr1, ...arr2....]
- 用于数组赋值时,尽可在结尾使用,否则报错
const [a, ...b] = [];
=> a = undefined, b = []
- 将字符串转为真正的数组:
[...'hello']
=> [h, e, l, l, o] - 任何有iterator遍历器的对象,都可以用它转为一个数组形式
方法
Array.from(arrayLike, mapFn?, thisArg?)
:将类数组对象与可遍历对象(有iterator接口的数据结构)转为真的数组- 有iterator接口的数据结构:string、set等
- 具有map功能,第二个参数将对第一个参数进行处理
- Array.of():将一组值转换成数组,弥补数组构造函数的不足
- 构造函数中,小于2个参数时,为数组的长度,反之才为数组的项
- 无参则返回空数组
- array.copyWith(target, start = 0, end = this.length):将指定位置的数组成员复制到其他位置,注意:
- target表示从该位置进行数据替换,start表示从该位置读取数据到target位置,end表示该位置停止数据的读取
- array.find(fn):找出第一个符合回调函数(参数为:value, index, arr)为true的成员,找不到返回undefined
- array.findIndex(fn):返回索引/-1
- 第二个参数用来绑定回调函数的this对象
- array.fill(value, start, end):使用给定值value填充数组,可选择填充的位置
- 数组遍历方法:entries(), values(), keys(),注意:
- 三者都返回一个iterator遍历器对象,可使用for..of进行循环遍历
- array.includes(value, start):数组是否包含值value
- 可进行判断是否包含NaN,indexof对NaN无效
- array.flat(level):将嵌套数组进行拉平展示
- 默认拉平一层,当level = infinite时,拉平所有的
- 自动跳过空位(无值)的项,例如
[, ,]
的形式- 注:es中,由于对空位的处理方式不一样,所以需要避免空位
- array.flatMap(fn):先对数组进行map方法,然后对结果执行flat方法