数组的扩展

##…

扩展运算符是…,好比rest参数的逆运算,讲一个数组转化为用逗号分割的参数序列。

1
2
3
4
console.log(...[1,2,3]);
//1,2,3
console.log(1...[1,2,3],5);
//1,2,3,4,5

用于函数调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function push(array,items){
array.push(...items);
}
function add(x,y){
return x+y
}
const numbers = [3,38];
add(...numbers); //41
```

## 应用
复制数组
```javascript
//es5
const a1 = [1,2];
const a2 = a1.contact();

//es6
const a1 = [1,2];
//写法一
const a2 = [...a1];
//写法二
const [...a2] = a1;

将字符串转化为数组

1
2
[..."hello"]
//["h","e","l","l","o"]

Array.from()

Array.from()方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。

1
2
3
4
5
6
7
8
//数组去重
var array = [1,2,1,1,"1"];

function unique(array){
return Array.from(new Set(array));
}

console.log(unique(array)); [1,2,"1"]

数组实例的includes()

Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串includes方法类似。ES2016引入该方法。

1
2
3
[1,2,3].includes(2)   //true
[1,2,3].includes(4) //false
[1,2,NaN].includes(NaN) //true