如何复制一个数组

如何复制一个数组,以下总结了 6 种复制数组的方法,你会几种?

6 种copy array的方法:

方法 1:运用扩展运算符...

1
2
3
4
5
6
7
function cloneArrayBySpreadOperator(arr) {
return [...arr];
}
const arr1 = [1, 2, 3];
const arr1_copy = cloneArrayBySpreadOperator(arr1);
arr1_copy[0] = 0;
console.log("result", arr1, arr1_copy);

方法 2: 使用Array.from()方法:

1
2
3
4
5
6
7
function cloneArrayByArrayFrom(arr) {
return Array.from(arr);
}

const arr2_copy = cloneArrayByArrayFrom(arr1);
arr2_copy[0] = 2;
console.log("result", arr1, arr2_copy);

方法 3: 使用数组的slice方法:

1
2
3
4
5
6
7
function cloneArrayByArraySlice(arr) {
return arr.slice();
}

const arr3_copy = cloneArrayByArraySlice(arr1);
arr3_copy[0] = 3;
console.log("result", arr1, arr3_copy);

使用数组的map方法:

1
2
3
4
5
6
7
function cloneArrayByArrayMap(arr) {
return arr.map((i) => i);
}

const arr4_copy = cloneArrayByArrayMap(arr1);
arr4_copy[0] = 4;
console.log("result", arr1, arr4_copy);

使用数组的filter方法:

1
2
3
4
5
6
function cloneArrayByArrayFilter(arr) {
return arr.filter(() => true);
}
const arr5_copy = cloneArrayByArrayMap(arr1);
arr5_copy[0] = 5;
console.log("result", arr1, arr5_copy);

使用Object.assign 方法

1
2
3
4
5
6
7
function cloneArrayByObjectAssign(arr) {
return Object.assign([], arr);
}

const arr6_copy = cloneArrayByArrayMap(arr1);
arr6_copy[0] = 6;
console.log("result", arr1, arr6_copy);

控制台打印