展开运算符
...
spread展开操作符
作用范围:
所有可迭代(iterable)的对象,包括:数组、对象、字符串
console.log(...[1, 2, 4]) // 1 2 4
console.log(..."123") // 字符串的 1 2 3
console.log({...{a: 1, b: 2, c: 3}}) // {a: 1, b: 2, c: 3}, 对象的展开后需用对象包裹一下,不然报错
常见用法
- 解构赋值
// 数组的解构赋值
const [a, b, ...c] = [1, 2, 3, 4];
console.log(a); // 1
console.log(b); // 2
console.log(c); // [3, 4]
// 对象的解构赋值
const {a, b, ...c} = {a: 1, b: 2, c: 3, d: 4};
console.log(a); // 1
console.log(b); // 2
console.log(c); // {c: 3, d: 4}
- 合并数组、对象
const ary1 = [1, 2, 3];
const ary2 = [1, 3, 4];
const ary3 = [...ary1, ...ary2]
console.log(ary3) // [1, 2, 3, 1, 3, 4]
const obj1 = {a: 1, b: 2, c: 3};
const obj2 = {d: 1, e: 2, c: 5};
const obj3 = {...obj1, ...obj2}
console.log(obj3) // {a: 1, b: 2, c: 5, d: 1, e: 2},如果key值重复,后面的会覆盖掉前面的。