Много лет назад, когда ещё не было специального объекта Map, ассоциативные массивы имитировались с помощью свойств объектов и проверки их принадлежности объекту:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var oldMap = Object.create(null); oldMap.key1 = "value1"; oldMap.key2 = 100.0 console.log(oldMap.key1); // value1 // Проверка существования console.log("key2" in oldMap); // true console.log("absent" in oldMap); // false |
В старом коде вы, возможно, ещё можете увидеть описанный выше способ, но в современном JavaScript есть специальный объект Map:
1 |
const m = new Map(); |
Устанавливаются связи ключ-значение в них с помощью метода set:
1 2 |
m.set("key1", "value1"); m.set("key2", 100.0); |
Проверить, связано ли какое-нибудь значение с ключом можно с помощью метода has:
1 2 3 4 5 6 |
console.log(m.has("key1")); // true console.log(m.has("absent")); // false |
Получить связанное значение по ключу можно с помощью метода get:
1 2 3 4 5 |
console.log(m.get("key1")); // value1 console.log(m.get("key2")) // 100 |
Удалить связь значения с ключом из ассоциативного массива Map можно с помощью метода delete, который возвращает true, если связь в ассоциативном массивы была удалена и false, если с переданным ключом никакого значения не связано:
1 |
m.delete("key2"); |
Можно очистить ассоциативный массив, удалив все связи:
1 |
m.clear() |
Есть методы keys() и values(), которые возвращают итераторы для прохода по всем ключам и по всем значениям соответственно:
1 2 3 4 5 6 7 |
for (const n of m.keys()) { console.log(n); } for (const i of m.values()) { console.log(i); } |
Можно пройтись по всем парам ключ-значение:
1 2 3 |
m.forEach((v, k, m1) => { console.log("key=" + k + ", value=" + v); }); |