javascript中spread运算符(...)是合并数组最简洁方式,可展开可迭代对象为独立元素;支持任意数量数组、单值及嵌套结构;仅浅展开,嵌套需配合flat();不修改原数组,但空值需校验。
javascript 中 spread 运算符(...)是合并多个数组最简洁、最常用的方式,它能把一个可迭代对象(比如数组)“展开”成独立的元素,再放进新数组里。
基础用法:用 ... 展开并拼接
直接在数组字面量中使用 ... 操作符,把多个数组依次展开即可:
- const arr1 = [1, 2];
- const arr2 = [3, 4];
- const arr3 = [5];
- const merged = [...arr1, ...arr2, ...arr3]; // [1, 2, 3, 4, 5]
支持任意数量和顺序的数组
spread 不限制数组个数,也不要求类型一致,还能混入单个值或嵌套结构:
- const a = [1];
- const b = ['x', 'y'];
- const c = [true];
- const result = [...a, 'hello', ...b, ...c]; // [1, 'hello', 'x', 'y', true]
与 concat 对比:更直观,但不修改原数组
spread 是生成新数组的纯操作,不会影响原始数组;而 concat() 也返回新数组,但语法稍冗长:
- [...arr1, ...arr2] 等价于 arr1.concat(arr2)
- 但 [...arr1, 'x', ...arr2] 比 arr1.concat(['x'], arr2) 更易读
- 注意:不能直接用 ... 修改已有数组(如 arr1.push(...arr2) 可以,但 arr1 = [...arr1, ...arr2] 才是赋值新数组)
常见陷阱提醒
spread 只做一层浅展开,遇到嵌套数组不会递归扁平化:
- const nested = [[1, 2], [3]]; [...nested] → [[1, 2], [3]](不是 [1, 2, 3])
- 需要扁平化时,配合 flat():[...nested.flat()] 或 [...nested].flat()
- 空数组或 undefined 会报错,使用前建议校验:...arr || []
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











