concat方法不修改原数组,返回新数组;可合并多个数组或值,但只浅拷贝一层,嵌套数组需配合flat()扁平化;es6+推荐用扩展运算符替代。

concat 方法不会修改原数组,而是返回一个由当前数组与传入参数拼接后的新数组。
基本用法:合并两个数组
调用 concat 时传入另一个数组,它会把该数组的元素依次添加到新数组末尾:
```jsconst arr1 = [1, 2];
const arr2 = [3, 4];
const merged = arr1.concat(arr2);
console.log(merged); // [1, 2, 3, 4]
console.log(arr1); // [1, 2](未改变)
```
一次合并多个数组或值
concat 支持传入任意多个参数,可以是数组、单个值,甚至混合使用:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 传入多个数组:每个数组的元素都会被展开并追加
- 传入普通值(如数字、字符串):这些值会作为独立元素加入
- 传入嵌套数组:默认只浅拷贝一层,不会递归扁平化
const a = [1];
const b = [2, 3];
const c = [4];
const result = a.concat(b, 5, c, 'end');
console.log(result); // [1, 2, 3, 5, 4, 'end']
```
注意嵌套数组不会自动扁平化
如果某个参数本身是二维数组,concat 只会把它当作一个元素加入,不会拆开:
```jsconst base = [1, 2];
const nested = [[3, 4], [5]];
console.log(base.concat(nested)); // [1, 2, [3, 4], [5]]
```
需要扁平化时,可配合 flat() 使用:
`base.concat(nested).flat()` → [1, 2, 3, 4, 5]
替代方案对比(ES6+ 推荐)
现代写法更常用扩展运算符(...),语义清晰且支持直接展开嵌套:
-
[...arr1, ...arr2, 5]等价于arr1.concat(arr2, 5) - 若要深度扁平,可用
[...arr1, ...arr2.flat(Infinity)] - 扩展运算符无法像 concat 那样接受变量数量的参数(除非用
apply或展开数组)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










