在 JavaScript 和 TypeScript 中,**浅拷贝(Shallow Copy)** 是指创建一个新数组,新数组中的元素是原数组中元素的引用(对于对象或数组)或值的复制(对于基本类型)。浅拷贝只复制一层,如果数组中的元素是对象或数组,则拷贝的是引用,而不是深层次的复制。
---
### 1. 浅拷贝的实现方式
以下是几种常见的浅拷贝数组的方法:
#### (1)使用 `slice()` 方法
`slice()` 方法返回一个新数组,包含原数组的浅拷贝。
```javascript
const originalArray = [1, 2, { name: "Alice" }];
const copiedArray = originalArray.slice();
console.log(copiedArray); // 输出: [1, 2, { name: "Alice" }]
console.log(copiedArray === originalArray); // 输出: false(新数组)
console.log(copiedArray[2] === originalArray[2]); // 输出: true(引用相同)
```
#### (2)使用 `concat()` 方法
`concat()` 方法可以用于连接数组,如果不传递参数,则返回原数组的浅拷贝。
```javascript
const originalArray = [1, 2, { name: "Alice" }];
const copiedArray = originalArray.concat();
console.log(copiedArray); // 输出: [1, 2, { name: "Alice" }]
console.log(copiedArray === originalArray); // 输出: false(新数组)
console.log(copiedArray[2] === originalArray[2]); // 输出