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

 

posted @ 2019-09-01 21:25  zjl_712  阅读(203)  评论(0编辑  收藏  举报