Khi cần xóa toàn bộ phần tử của mảng, có 3 cách phổ biến — khác nhau ở việc có ảnh hưởng đến các biến tham chiếu cùng trỏ đến mảng đó hay không.
Cách 1: Gán mảng mới arr = []
Tạo mảng rỗng mới, biến cũ trỏ đến mảng mới. Biến tham chiếu cũ vẫn giữ mảng gốc.
let arr1 = [1,2,3,4,5];
let arr2 = arr1; // Tham chiếu cùng mảng
arr1 = []; // arr1 giờ trỏ mảng mới
console.log(arr2); // [1,2,3,4,5] — KHÔNG thay đổi
Cách 2: Đặt length = 0 arr.length = 0
Làm rỗng mảng gốc tại chỗ. Tất cả tham chiếu đều thấy mảng rỗng.
let arr1 = [1,2,3,4,5];
let arr2 = arr1;
arr1.length = 0;
console.log(arr2); // [] — ĐÃ thay đổi
Cách 3: splice(0, length) arr.splice(0, arr.length)
Xóa tất cả phần tử từ đầu. Tương tự cách 2 — cập nhật tất cả tham chiếu.
let arr1 = [1,2,3,4,5];
let arr2 = arr1;
arr1.splice(0, arr1.length);
console.log(arr2); // [] — ĐÃ thay đổi
Bảng so sánh
| Cách | Cú pháp | Ảnh hưởng tham chiếu khác | Hiệu suất | Khuyến nghị |
|---|---|---|---|---|
| Gán mới | arr = [] | Không | Nhanh nhất | Không có biến tham chiếu khác |
| Length = 0 | arr.length = 0 | Có | Nhanh | Cần đồng bộ tất cả ref |
| Splice | arr.splice(0, arr.length) | Có | Chậm hơn (trả về mảng xóa) | Cần mảng phần tử bị xóa |
Lưu ý quan trọng
- Nếu mảng được khai báo
const, không thể gán mới (arr = []lỗi) → phải dùnglength = 0hoặcsplice. splicetrả về mảng các phần tử đã xóa — tốn bộ nhớ nếu mảng lớn.