Cấu Trúc Dữ Liệu (Data Structures)
Cấu trúc dữ liệu là cách tổ chức, quản lý và lưu trữ dữ liệu để truy cập và sửa đổi hiệu quả. Trong JavaScript có nhiều cấu trúc dữ liệu tích hợp sẵn phục vụ các nhu cầu khác nhau.
Nội dung
Phần tiêu đề “Nội dung” Keyed Collections — Map & Set Map, Set, WeakMap, WeakSet — bảng tra cứu key→value và tập hợp không trùng lặp
Structured Data — JSON JSON — định dạng trao đổi dữ liệu nhẹ, phổ biến nhất trên web
Indexed Collections — Array & TypedArray Array, TypedArray — danh sách có thứ tự, truy cập theo chỉ số
Phân loại nhanh
Phần tiêu đề “Phân loại nhanh”| Cấu trúc | Mô tả | Khi nào dùng |
|---|---|---|
| Array | Danh sách có thứ tự, truy cập theo chỉ số | Duyệt tuần tự, push/pop |
| Object | Bảng ánh xạ key→value (key là string/symbol) | Cấu hình, record nhỏ |
| Map | Bảng băm “xịn” — key là bất kỳ giá trị | Key là object, cần thứ tự chèn |
| Set | Tập hợp không trùng lặp | Khử trùng, kiểm tra tồn tại |
| WeakMap / WeakSet | Key/phần tử là object, GC tự thu gom | Cache, private state |
| TypedArray | Mảng nhị phân hiệu năng cao | WebGL, audio, ML |
| JSON | Định dạng trao đổi dữ liệu | HTTP, localStorage, file |
Độ phức tạp hay gặp
Phần tiêu đề “Độ phức tạp hay gặp”| Thao tác | Độ phức tạp |
|---|---|
push / pop | O(1) |
shift / unshift / splice | O(n) |
Truy cập arr[i] | O(1) |
includes / indexOf | O(n) |
sort | ~O(n log n) |
| Thao tác | Độ phức tạp |
|---|---|
set / add | O(1) trung bình |
get / has | O(1) trung bình |
delete | O(1) trung bình |
| Thao tác | Độ phức tạp |
|---|---|
Truy cập obj.key | O(1) trung bình |
delete obj.key | O(1) trung bình |
Object.keys() | O(n) |