1. Sử dụng phương pháp cơ bản
Sao chép mảng bằng vòng lặp
Đây là phương pháp đơn giản và dễ hiểu nhất để sao chép một mảng.
const originalArray = [1, 2, 3, 4, 5];
let clonedArray = [];
for (let i = 0; i < originalArray.length; i++) {
clonedArray.push(originalArray[i]);
}
console.log(clonedArray); // [1, 2, 3, 4, 5]
Sử dụng phương thức slice()
Phương thức slice() có thể được sử dụng để sao chép một mảng một cách nhanh chóng.
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = originalArray.slice();
console.log(clonedArray); // [1, 2, 3, 4, 5]
2. Sử dụng Spread Operator
Spread Operator là một cách hiện đại và rất tiện lợi để sao chép mảng trong Javascript.
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = [...originalArray];
console.log(clonedArray); // [1, 2, 3, 4, 5]
3. Sử dụng từ khóa Array.from()
Cách này cũng rất tiện lợi và phổ biến để sao chép mảng.
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = Array.from(originalArray);
console.log(clonedArray); // [1, 2, 3, 4, 5]
4. Sao chép mảng đa chiều
Sao chép mảng một cách đệ quy
Để sao chép một mảng đa chiều, ta cần một phương thức đệ quy.
function deepCloneArray(arr) {
let clone = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
clone[i] = deepCloneArray(arr[i]);
} else {
clone[i] = arr[i];
}
}
return clone;
}
const originalArray = [1, [2, 3], [4, [5, 6]]];
const clonedArray = deepCloneArray(originalArray);
console.log(clonedArray); // [1, [2, 3], [4, [5, 6]]]
console.log(originalArray === clonedArray); // false
console.log(originalArray[1] === clonedArray[1]); // false
Ngoài các phương pháp bạn đã nêu, còn một số phương pháp khác để sao chép mảng trong JavaScript, bao gồm:
5. Sử dụng Array.from()
Phương thức này cũng rất tiện lợi để tạo ra một bản sao của mảng.
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = Array.from(originalArray);
console.log(clonedArray); // [1, 2, 3, 4, 5]
6. Sử dụng concat()
Bạn có thể sử dụng concat()
với một mảng trống để tạo bản sao của mảng.
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = [].concat(originalArray);
console.log(clonedArray); // [1, 2, 3, 4, 5]
7. Sử dụng map()
Nếu bạn muốn sao chép mảng và có thể biến đổi các giá trị trong quá trình này, bạn có thể sử dụng map()
.
const originalArray = [1, 2, 3, 4, 5];
const clonedArray = originalArray.map(x => x);
console.log(clonedArray); // [1, 2, 3, 4, 5]
8. Sử dụng structuredClone() (ES2021)
Phương thức này được sử dụng để sao chép sâu một cách hiệu quả mà không cần sử dụng JSON. Cách này đặc biệt hữu ích với các đối tượng phức tạp chứa nhiều kiểu dữ liệu khác nhau.
const originalArray = [1, [2, 3], { a: 1 }];
const clonedArray = structuredClone(originalArray);
console.log(clonedArray); // [1, [2, 3], { a: 1 }]
console.log(originalArray === clonedArray); // false
Các phương pháp này sẽ giúp bạn có nhiều lựa chọn linh hoạt hơn khi làm việc với việc sao chép mảng trong JavaScript.
Kết luận
Trên đây là các phương pháp để sao chép mảng trong Javascript từ cơ bản đến nâng cao. Tùy vào tình huống cụ thể mà bạn có thể lựa chọn phương pháp phù hợp nhất. Hãy luôn chú ý việc sao chép các mảng đa chiều để tránh xảy ra lỗi không mong muốn.