展开运算符(Spread Operator)

2024-01-09 01:44

本文主要是介绍展开运算符(Spread Operator),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

展开运算符(Spread Operator)是ES6中引入的一种语法,使用三个连续的点(...)表示。它可以在多种场合下使用,主要用途是“展开”数组或对象中的元素或属性。

使用展开运算符的几种常见情景:

  1. 在函数调用时展开数组元素:
function sum(x, y, z) {return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 相当于执行 sum(1, 2, 3),输出6
  1. 在数组字面量中合并多个数组:
const fruits = ['apple', 'banana'];
const moreFruits = ['orange', 'grape'];
const allFruits = [...fruits, ...moreFruits];
console.log(allFruits); // 输出 ['apple', 'banana', 'orange', 'grape']
  1. 复制数组:
const arr = [1, 2, 3];
const arrCopy = [...arr]; // 创建arr的一个浅拷贝
  1. 在对象字面量中合并对象:
const obj1 = { foo: 'bar', x: 42 };
const obj2 = { foo: 'baz', y: 13 };
const mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // 输出 { foo: 'baz', x: 42, y: 13 }

请注意,在合并对象时,如果有重复的键,则后面展开的对象属性会覆盖前面的。

  1. 复制对象:
const obj = { name: 'John', age: 30 };
const objCopy = { ...obj }; // 创建obj的一个浅拷贝
  1. 使用展开运算符代替apply方法:
const numbers = [9, 3, 2];
const maxNum = Math.max.apply(null, numbers); // 之前的写法
const maxNumNew = Math.max(...numbers); // 使用展开运算符的写法
console.log(maxNumNew); // 输出9,同样获得数组中的最大值

当使用展开运算符时有几点需要注意:

  • 展开运算符拷贝的是数组或对象的元素或属性的引用,这意味着如果数组或对象中的元素是对象或数组,那么展开的是这些元素的引用,而不是它们的实际深拷贝。
  • 展开对象时,只有对象自己的可枚举属性会被展开,不包括从原型链继承来的属性。

展开运算符大大简化了某些操作,并使代码更整洁和易读。

这篇关于展开运算符(Spread Operator)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/585543

相关文章

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &(位与) 对两个数的二进制表示进行位与操作。只有两个相应的二进制位都为 1 时,结果的该位才为 1,否则为 0。 |(位

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

《C++中的移动构造函数与移动赋值运算符:解锁高效编程的最佳实践》

在 C++的编程世界中,移动构造函数和移动赋值运算符是提升程序性能和效率的重要工具。理解并正确运用它们,可以让我们的代码更加高效、简洁和优雅。 一、引言 随着现代软件系统的日益复杂和对性能要求的不断提高,C++程序员需要不断探索新的技术和方法来优化代码。移动构造函数和移动赋值运算符的出现,为解决资源管理和性能优化问题提供了有力的手段。它们允许我们在不进行不必要的复制操作的情况下,高效地转移资源

Java基础--基本运算符介绍

Java运算符 用于指明对于操作数的运算方式。 分类: 按照操作数的数目来进行分类: 单目a++ 双目a+b 三目(a>b)?x:y; 按照运算符的功能来进行分类: 算术运算:+ - * / %(取余)++ – 如: int x=1; x=x+1;//x空间内的值,自己增加了一个 x++;//x空间内的值,自增一个 ++x;//对于x空间内的值来讲都是一致,最终的结果都自

【MATLAB】运算符及其优先级

在MATLAB语言中,运算符可以灵活组合以构建更复杂的运算表达式。需要注意的是,与其他高级编程语言类似,MATLAB中的运算符也有优先级。掌握运算优先级有助于我们正确地执行复杂的计算。以下是按照从高到低顺序排列的MATLAB运算符及其优先级列表。 括号 ()。数组的转秩 ( .’ ),数组幂 ( .^ ) ,复转秩 ( ’ ),矩阵幂 ( ^ )。代数正 ( + ),代数负 ( - ),逻辑非

C++ 第7章 运算符重载

7.1 运算符重载规则 7.1.1 重载运算符的限制 可重载运算符: + - * / % ^ & | ~! = < > += -+ *= /= %=^= &= |= << >> >>= <<= == !=<= >= && || ++ -- ->* , ->[] () new delete 不可重载运算符: . .* :: ?: sizeof 重载运算符函数可以对运算符做出新的解

java复习第六课,运算符

java语言支持运算符: 算数运算符:+,-,*,/,%,++,-- 二元运算符(+,-,*,/,%) 整数运算: 如果两个操作数有一个是Long,那么结果就为Long。 没有Long时,结果就为int,即使操作数全为shot,byte,结果也是int。 浮点运算: 如果两个操作数有一个是double,那么结果就为double。 只有两个操作数都是float,则结果才能为float

Flink 原理与实现:Operator Chain原理

硬刚大数据系列文章链接: 2021年从零到大数据专家的学习指南(全面升级版) 2021年从零到大数据专家面试篇之Hadoop/HDFS/Yarn篇 2021年从零到大数据专家面试篇之SparkSQL篇 2021年从零到大数据专家面试篇之消息队列篇 2021年从零到大数据专家面试篇之Spark篇 2021年从零到大数据专家面试篇之Hbase篇

Flink: 两个递归彻底搞懂operator chain

《2021年最新版大数据面试题全面开启更新》 operator chain是指将满足一定条件的operator 链在一起,放在同一个task里面执行,是Flink任务优化的一种方式,在同一个task里面的operator的数据传输变成函数调用关系,这种方式减少数据传输过程。常见的chain例如:source->map->filter,这样的任务链可以chain在一起,那么其内部是如何决定