JavaScript không có mảng liên kết thật sự
Mảng JS chỉ dùng chỉ số số (0,1,2...). Dùng Object hoặc Map cho cặp key-value.
Cách 1: Object (truyền thống)
var user = {
name: "An",
age: 25,
"email-address": "an@example.com" // key có dấu gạch nối
};
user.name; // "An"
user["email-address"]; // "an@example.com"
user.phone = "0909..."; // thêm động
delete user.age; // xóa
Cách 2: Map (ES6) – Khuyên dùng cho dữ liệu động
var map = new Map();
map.set("name", "An");
map.set(42, "số làm key"); // key bất kỳ kiểu
map.set({}, "object key"); // object làm key
map.get("name"); // "An"
map.has("age"); // false
map.size; // 3
map.delete(42);
map.clear(); // xóa tất cả
// Duyệt
map.forEach((value, key) => console.log(key, value));
for (let [k, v] of map) console.log(k, v);
So sánh Object vs Map
| Đặc điểm | Object | Map |
|---|---|---|
| Key type | String/Symbol | Bất kỳ |
| Kích thước | Object.keys().length | .size |
| Duyệt | for...in / Object.keys | forEach / for...of |
| Prototype pollution | Có rủi ro | An toàn |
| Hiệu năng thêm/xóa nhiều | Kém hơn | Tốt hơn |
| JSON | JSON.stringify() | Cần chuyển thủ công |
Khi nào dùng gì?
- Object: cấu trúc cố định, key string, cần JSON.
- Map: key động, key không phải string, thêm/xóa nhiều, cần size nhanh.