Đâ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]
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]
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]
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]
Để 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:
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]
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]
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]
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.
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.