数组的扩展
1. 扩展运算符( spread ) 是三个点 ( … ), 它如同rest参数的逆运算, 将一个数组转为用逗号分隔的参数序列
console.log( ...[1,2,3])
console.log( 1,2, ...[3,4,5], 6 )
2. 合并数组
扩展运算符提供了数组合并的新方法
ES5
[ 1,2 ] .contact( more )
ES6
[ 1,2 ...more ]
3. Array.from()
Array.from方法用于将两类对象转为真正的数组

实际应用中, 常见的类似数组的对象是DOM操作返回的NodeList和函数内部的arguments对象, Array.from都可以将它们转为真正的数组
//NodeList对象
let ps = document.querySelectorAll('p');
Array.from(ps).forEach( function(p) ){
console.log(p);
});
// arguments 对象
function foo(){
var args = Array.from(arguments);
}
只要是部署了Iterator接口的数据结构, Array.from都能将其转为数组
4. Array.of()
Array.of 方法用于将一组值转换为数组
Array.of( 3,11,8 )
5. 数组实例的copyWithin()
数组实例的copyWithin方法会在当前数组内部将指定位置的成员复制到其他位置, 然后返回当前数组.
也就是说, 使用这个方法会修改当前数组
target: 从该位置开始替换
start: 从该位置开始读取数据,默认为0, 复数表示倒数
end: 到该位置前停止读取数据,默认等于数组长度
[1,2,3,4,5].copyWithin(0,3) // [4,5,3,4,5]
6. 数组实例的 find() 和 findIndex()
数组实例的find方法用于找出第一个符合条件的数组成员.
它的参数是一个回调函数, 所有数组成员依次执行这个回调函数, 直到找到第一个返回值为true的成员, 然后返回该成员, 如果没有符合条件的成员, 则返回undefined.
[ 1,2,3,4 ].find( (n) => n>1 )
// 2
find方法的回调函数可以接受3个参数, 依次为 当前的值, 当前的位置 和 原数组
findIndex方法的用法和find类似, 返回第一个成员的位置
7. 数组实例的fill()
fill方法使用给定的值填充一个数组
new Array(3).fill(7) //[ 7,7,7 ]
第二个参数和第三个参数可以用于指定填充的起始位置和结束位置
8. 数组实例的entries(), keys() 和 values()
ES6 提供了3个新方法用于遍历数组. 它们都返回一个遍历器对象, 可以用for…of 循环遍历, 唯一的区别在于keys是对键名遍历, values对值遍历, entries对键值对遍历



9. 数组实例的includes()
includes 方法返回一个布尔值, 表示某个数组是否包含给定的值
10. 数组的空位
空位不等于undefined, 空位没有任何值 [, , , ]