Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách dùng mảng liên kết (associative array) / hashing trong JavaScript

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ểmObjectMap
Key typeString/SymbolBất kỳ
Kích thướcObject.keys().length.size
Duyệtfor...in / Object.keysforEach / for...of
Prototype pollutionCó rủi roAn toàn
Hiệu năng thêm/xóa nhiềuKém hơnTốt hơn
JSONJSON.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.