导读:本期聚焦于小伙伴创作的《javascript展开运算符是什么?它如何合并数组或对象?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《javascript展开运算符是什么?它如何合并数组或对象?》有用,将其分享出去将是对创作者最好的鼓励。

展开运算符是JavaScript ES6引入的语法特性,符号为三个点...,它可以将数组、对象等可迭代对象展开为独立的元素,在很多场景下都能简化代码逻辑,其中最常见的用途就是合并数组和对象。

javascript展开运算符是什么?它如何合并数组或对象?

展开运算符的基本定义

展开运算符的核心作用是把可迭代对象(比如数组、字符串、Set等)或者对象的自身可枚举属性,在语法层面展开成独立的个体。它既可以用在数组相关的操作中,也可以用在对象相关的操作中,使用场景非常灵活。

简单来说,当你在数组字面量、函数调用或者对象字面量中使用...加上一个可迭代对象时,这个可迭代对象就会被展开成对应的单个元素或者属性。

使用展开运算符合并数组

合并数组是展开运算符非常典型的使用场景,相比传统的concat方法,用展开运算符合并数组的语法更直观,代码可读性也更高。

合并两个数组

只需要把两个数组都用展开运算符展开,放在一个新的数组字面量中,就能得到合并后的新数组,原数组不会被修改。

// 定义两个原始数组
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];

// 使用展开运算符合并数组
const mergedArr = [...arr1, ...arr2];

console.log(mergedArr); // 输出 [1, 2, 3, 4, 5, 6]
console.log(arr1); // 输出 [1, 2, 3],原数组未被修改
console.log(arr2); // 输出 [4, 5, 6],原数组未被修改

合并多个数组

如果有多个数组需要合并,同样可以把所有数组都用展开运算符展开,放在新数组中即可,不需要多次调用concat方法。

const arr1 = ['a', 'b'];
const arr2 = ['c', 'd'];
const arr3 = ['e', 'f'];

const mergedArr = [...arr1, ...arr2, ...arr3];
console.log(mergedArr); // 输出 ["a", "b", "c", "d", "e", "f"]

在合并时添加新元素

展开运算符合并数组的时候,还可以在新数组的任意位置添加额外的元素,顺序完全由你决定。

const arr1 = [1, 2];
const arr2 = [5, 6];

// 在两个数组中间添加元素3、4
const mergedArr = [...arr1, 3, 4, ...arr2];
console.log(mergedArr); // 输出 [1, 2, 3, 4, 5, 6]

使用展开运算符合并对象

展开运算符同样可以用来合并对象,它会把源对象的所有可枚举属性复制到目标对象中,这个特性在ES6之后被广泛使用,替代了很多需要手动遍历对象属性的场景。

合并两个对象

把两个对象用展开运算符展开,放在一个新的对象字面量中,就能得到合并后的新对象,如果属性名有重复,后面的对象的属性会覆盖前面对象的同名属性。

// 定义两个原始对象
const obj1 = { name: '张三', age: 20 };
const obj2 = { gender: '男', city: '北京' };

// 使用展开运算符合并对象
const mergedObj = { ...obj1, ...obj2 };

console.log(mergedObj); // 输出 { name: '张三', age: 20, gender: '男', city: '北京' }
console.log(obj1); // 输出 { name: '张三', age: 20 },原对象未被修改
console.log(obj2); // 输出 { gender: '男', city: '北京' },原对象未被修改

处理同名属性的合并

当合并的多个对象存在同名属性时,排在后面的对象的属性值会覆盖前面的,这个特性可以用来给对象设置默认值或者覆盖特定属性。

const defaultConfig = { timeout: 3000, retry: 2, log: false };
const userConfig = { timeout: 5000, log: true };

// 用户配置覆盖默认配置
const finalConfig = { ...defaultConfig, ...userConfig };
console.log(finalConfig); // 输出 { timeout: 5000, retry: 2, log: true }

合并多个对象

和数组合并一样,合并多个对象也只需要把所有对象都用展开运算符展开放在新对象中即可。

const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = { c: 3 };

const mergedObj = { ...obj1, ...obj2, ...obj3 };
console.log(mergedObj); // 输出 { a: 1, b: 2, c: 3 }

使用展开运算符合并的注意事项

  • 展开运算符合并数组和对象都是浅拷贝,如果数组或对象中包含引用类型的元素,拷贝的是引用地址,修改拷贝后的值会影响原数据。
  • 展开运算符只能展开可迭代对象,比如数组、字符串、Set、Map等,不能直接展开普通的对象(不过在对象字面量中使用展开运算符展开对象是ES2018引入的特性,属于例外情况)。
  • 函数调用时使用展开运算符传参,会把数组展开成多个参数,比如Math.max(...[1,2,3])等价于Math.max(1,2,3)
展开运算符是JavaScript中非常实用的语法糖,掌握它合并数组和对象的方法,可以让你的代码更简洁,减少不必要的冗余逻辑,建议在日常开发中多尝试使用。

javascript展开运算符数组合并对象合并spread_operator修改时间:2026-07-11 02:24:26

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。