Array.concat() 合并数组
最后更新:2026-09-09
Array.concat() 合并数组
concat 把传入的值或其他数组接在原数组后面,返回一个全新数组;原数组不会被修改。参数可以是任意值,数组会被浅展开一层——嵌套数组里的元素保持原样。
| 分类 | 数组 |
|---|---|
| ES 版本 | ES3(1999) |
📝 语法
const 新数组 = 数组.concat(值1, 值2, ..., 值N);
⚙️ 参数
| valueN | 要追加到末尾的值或数组;数组参数会被展开一层后逐个追加。 |
|---|
返回值:拼接后的新数组。
是否修改原值:否(返回新值)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
[ 1, 2, 3, 4, 5 ]
[ 1, 2 ]
4
💡 提示 拼接嵌套数组时 concat 只展开一层,想完全展平请用 flat() 或 flatMap()。
⚠️ 警告 concat 的参数是数组时只复制引用——修改嵌套数组里的对象会同时影响原数组和结果。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| Array.concat() | ✓ v1 | ✓ v12 | ✓ v1.5 | ✓ v3 | ✓ v10.5 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关数组方法
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qconcat 和 push 有什么区别?
Apush 把参数作为单个元素追加并修改原数组;concat 会把数组参数展开一层逐个追加并返回新数组。追加另一个数组时两者结果完全不同。
Q如何拼接多个数组?
A链式调用 arr1.concat(arr2, arr3),或用展开符 [...arr1, ...arr2](ES2015),后者还能在中间插入其他元素。
Qconcat 会深拷贝嵌套对象吗?
A不会。concat 是浅拷贝:嵌套的数组或对象只复制引用,修改它们会同时影响新旧两个数组。需要深拷贝请用 structuredClone。