ES6新增语法 扩展运算符

简介: ES6新增语法 扩展运算符


介绍:

写法 : 三个点(...)

扩展运算符,是在ES6中新增加的内容,它可以在函数调用或者数组构造的时候,将数组表达式或者string在语法层面进行展开;

我们可以直接看代码 就容易理解它是干什么的了

let str = "hello";
console.log(...str); // "h" "e" "l" "l" "o"

通过扩展运算符,我们很容易的将str这个字符串给拆开.

接下来我们多介绍一些使用扩展运算符的场景,方便更好地去理解它到底是干嘛的,怎么用,什么时候去用.

使用场景

1. 合并数组

在传统的写法里面,我们经常通过这个concat()API方法来进行数组的合并

concat() : concat()方法可以将两个多个数组合并为一个新的数组,用法如下:

const arr1 = [1, 2, 3];
 const arr2 = [4, 5, 6];
 const arr3 = arr1.concat(arr2); // [1, 2, 3, 4, 5, 6]

上述例子中,我们将 arr1arr2 数组合并成一个新的数组,并将其赋值给 arr3

然而,使用扩展运算符(...) 可以很方便地实现多个数组的合并

const arr1 = [1, 2, 3];
 const arr2 = [4, 5, 6];
 const arr3 = [...arr1,...arr2]
 console.log(arr3) // (6) [1, 2, 3, 4, 5, 6]

2.复制数组

传统的方法中,我们通常使用 slice() 方法来复制数组,例如:

const originalArray = [1, 2, 3];
const copiedArray = originalArray.slice();
console.log(copiedArray); // [1, 2, 3]

然而,使用扩展运算符可以更加简洁地复制数组,如下所示:

const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
console.log(copiedArray); // [1, 2, 3]

需要注意的是,使用扩展运算符复制数组时,复制的是数组的值不是引用。所以修改复制后的数组不会影响原始数组

const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
copiedArray.push(4);
console.log(originalArray); // [1, 2, 3]
console.log(copiedArray); // [1, 2, 3, 4]

在复制后的数组上执行 push() 操作,只会修改复制后的数组,而不会改变原始数组。

3. 数组去重

使用扩展运算符去重数组可以消除重复的元素,并返回一个新的去重后的数组。

这里我们先介绍一个es6之后新增的数据结构Set

Set(): 它只存储唯一的值,不允许重复.

const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // [1, 2, 3, 4, 5]

通过将数组传递给 Set 构造函数,我们创建了一个包含去重后的值的 Set 对象。

然后,我们使用扩展运算符将 Set 对象转换为一个新的数组。扩展运算符将 Set 对象中的每个元素展开,并将它们放入新数组中。

4. 求数组最大值,最小值. 配合Math方法使用

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

5. 与解构赋值搭配使用

// 解构赋值结合
const [a, ...b] = [1, 2, 3, 4, 5, 6];
console.log(a) // 1
console.log(b); // (5) [2, 3, 4, 5, 6]
const [food, ...rest] = [];
console.log(food); // undefined
console.log(rest); //[]

扩展运算符必须放在参数末尾,否则都会报错

image.png

6. 函数中的应用

function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers);
console.log(result); // 6


目录
相关文章
|
6月前
|
网络架构
ES6中数组新增了哪些扩展?
ES6中数组新增了哪些扩展?
75 1
|
6月前
|
JavaScript
|
3月前
ES6新增语法 对象解构
ECMAScript6引入的对象解构语法允许在一行代码中完成多个赋值操作。例如,从一个包含姓名和年龄的对象中提取属性,传统方法需分别获取,而使用解构赋值可简洁实现相同功能。此外,它支持为未定义的属性设置默认值、对已声明变量的解构赋值(需加括号)、嵌套解构以及在函数参数中直接解构等特性,极大提升了代码的可读性和编写效率。
32 1
ES6新增语法 对象解构
|
3月前
|
存储 JavaScript 前端开发
es6 扩展运算符
【8月更文挑战第20天】
19 0
|
3月前
|
JavaScript 前端开发 网络架构
ES6新特性: 默认参数及扩展运算符和剩余参数
ES6新特性: 默认参数及扩展运算符和剩余参数
|
6月前
|
存储 网络架构
ES6之rest参数、扩展运算符
ES6之rest参数、扩展运算符
38 1
|
6月前
|
网络架构
ES6函数新增了哪些扩展?
ES6函数新增了哪些扩展?
59 0
|
11月前
|
JavaScript 前端开发
ES6学习(四)—字符串的新增方法
ES6学习(四)—字符串的新增方法
|
网络架构
es6扩展运算符的学习使用
es6扩展运算符的学习使用
48 0
|
网络架构
ES6中函数新增了哪些扩展?
ES6允许为函数的参数设置默认值