展开运算符[...arr]可实现一维数组的浅拷贝,生成新数组且不影响原数组;适用于纯值类型,支持添加元素、合并数组等操作,语义清晰,推荐首选。

用展开运算符 [...arr] 可以快速复制一维数组,生成一个新数组,原数组不受影响。
基本写法
直接在方括号内使用三个点加原数组名:
const newArr = [...oldArr];- 这会把
oldArr中每个元素依次取出,放进新数组 - 适用于纯值类型(数字、字符串、布尔值)的一维数组
为什么能复制?
展开运算符把数组“打散”成逗号分隔的值,再被包裹进新数组字面量中。相当于手动写 [oldArr[0], oldArr[1], ...],但自动完成。
- 不是引用复制,而是浅拷贝 —— 新数组和旧数组内存地址不同
- 修改
newArr不会影响oldArr,反之亦然 - 注意:只对第一层有效;如果数组里有对象,对象本身仍是引用
常见搭配用法
展开运算符常和其他操作组合使用:
- 添加元素:
[...arr, newItem]或[newItem, ...arr] - 合并数组:
[...arr1, ...arr2] - 与解构结合:
const [first, ...rest] = arr;
对比其他复制方法
相比 arr.slice() 或 Array.from(arr),展开运算符更简洁直观:
-
[...arr]—— 语义清晰,现代写法,推荐首选 -
arr.slice()—— 兼容性更好(支持老浏览器) -
Array.from(arr)—— 功能更强(可传 map 函数),稍重一点
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











