ES6数组扩展
1、扩展运算符
扩展运算符(spread)是三个点(...).它好比rest参数的逆运算,将一个数组转化为用逗号分隔的参数序列;
console.log(...[2,3,4,99]) // 2,3,4,99
2、Array.from 用于将两类对象转为真正的数组:类数组对象(array-like object)(包含length属性,索引:0~n)
和可遍历(iterable)的对象(ES6 中的 Set 和 Map);
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; console.log(Array.from(arrayLike)) //[ 'a', 'b', 'c' ]
只要是部署了Iterator接口的数据结构,Array.from()都能将其转为数组
console.log(Array.from('hello'))
[ 'h', 'e', 'l', 'l', 'o' ]
3、Array.of 用于将一组值,转化为数组。这个方法的主要目的是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异
Array.of(3,4,5) // [3,4,5] // 构造函数创建数组 var arr = new Array(10) // 长度为10的数组
4、数组实例的 find() 和 findIndex()
数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调 函数,所有数组成员依次执行该回调函数,
直到找出第一个返回值为true的成员, 然后返回该成员。如果没有符合条件的成员,则返回undefined 。find方法的回调
函数可以接受三个参数,依次为当前的值、当前的位置和原数组。
var a=[1, -1,4, -5, 10].find((n) => n < 0) console.log(a) // -5
数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组 成员的位置,如果所有成员都不符合条件,则返回-1。
var b = [1, 5, 10, 15].findIndex(function(value, index, arr) { return value > 9; })
console.log(b) //2
5、数组实例 的 fill()
fill方法使用给定值,填充一个数组。
['a', 'b', 'c'].fill(7) // [7, 7, 7] new Array(3).fill(7) // [7, 7, 7]
6、数组实例的 entries(),keys()
这两个方法用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历, entries()是对键值对的遍历;
for (let index of ['a', 'b'].keys()) { console.log(index);// 0,1 }
for (let [index, elem] of ['a', 'b'].entries()) { console.log(index, elem);// 0 'a',1 'b' }
7、数组实例的 includes()
该方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法 类似。
[1, 2, 3].includes(3) // true [1, 2, 3].includes(9) // false [1, 2, NaN].includes(NaN) // true
路很远,但从未止步