Поиск…
Синтаксис
- новая карта ([итерируемый])
- map.set (ключ, значение)
- map.get (ключ)
- map.size
- map.clear ()
- map.delete (ключ)
- map.entries ()
- map.keys ()
- map.values ()
- map.forEach (callback [, thisArg])
параметры
параметр | подробности |
---|---|
iterable | Любой итерируемый объект (например, массив), содержащий пары [key, value] . |
key | Ключ элемента. |
value | Значение, присвоенное ключу. |
callback | Функция обратного вызова вызвана с тремя параметрами: значением, ключом и картой. |
thisArg | Значение, которое будет использоваться как this при выполнении callback . |
замечания
В картах NaN
считается таким же, как NaN
, хотя NaN !== NaN
. Например:
const map = new Map([[NaN, true]]);
console.log(map.get(NaN)); // true
Создание карты
Карта - это базовое отображение ключей к значениям. Карты отличаются от объектов тем, что их ключи могут быть любыми (примитивные значения, а также объекты), а не только строки и символы. Итерация над картами также всегда выполняется в том порядке, в котором элементы были вставлены в карту, тогда как порядок не определен при повторении ключей в объекте.
Чтобы создать карту, используйте конструктор карты:
const map = new Map();
Он имеет необязательный параметр, который может быть любым итерируемым объектом (например, массивом), который содержит массивы из двух элементов - сначала это ключ, секунды - это значение. Например:
const map = new Map([[new Date(), {foo: "bar"}], [document.body, "body"]]);
// ^key ^value ^key ^value
Очистка карты
Чтобы удалить все элементы с карты, используйте метод .clear()
:
map.clear();
Пример:
const map = new Map([[1, 2], [3, 4]]);
console.log(map.size); // 2
map.clear();
console.log(map.size); // 0
console.log(map.get(1)); // undefined
Удаление элемента с карты
Чтобы удалить элемент с карты, используйте метод .delete()
.
map.delete(key);
Пример:
const map = new Map([[1, 2], [3, 4]]);
console.log(map.get(3)); // 4
map.delete(3);
console.log(map.get(3)); // undefined
Этот метод возвращает true
если элемент существует и был удален, иначе false
:
const map = new Map([[1, 2], [3, 4]]);
console.log(map.delete(1)); // true
console.log(map.delete(7)); // false
Проверка наличия ключа на карте
Чтобы проверить, существует ли ключ на карте, используйте .has()
:
map.has(key);
Пример:
const map = new Map([[1, 2], [3, 4]]);
console.log(map.has(1)); // true
console.log(map.has(2)); // false
Итерирование карт
Карта имеет три метода, которые возвращают итераторы: .keys()
, .values()
и .entries()
. .entries()
- это .entries()
карты по умолчанию и содержит пары [key, value]
.
const map = new Map([[1, 2], [3, 4]]);
for (const [key, value] of map) {
console.log(`key: ${key}, value: ${value}`);
// logs:
// key: 1, value: 2
// key: 3, value: 4
}
for (const key of map.keys()) {
console.log(key); // logs 1 and 3
}
for (const value of map.values()) {
console.log(value); // logs 2 and 4
}
Карта также имеет .forEach()
. Первый параметр - это функция обратного вызова, которая будет вызываться для каждого элемента на карте, а второй параметр - это значение, которое будет использоваться как this
при выполнении функции обратного вызова.
Функция обратного вызова имеет три аргумента: значение, ключ и объект карты.
const map = new Map([[1, 2], [3, 4]]);
map.forEach((value, key, theMap) => console.log(`key: ${key}, value: ${value}`));
// logs:
// key: 1, value: 2
// key: 3, value: 4
Получение и настройка элементов
Используйте .get(key)
чтобы получить значение по ключу и .set(key, value)
чтобы присвоить значение ключу.
Если элемент с указанным ключом не существует на карте, .get()
возвращает undefined
.
.set()
возвращает объект карты, поэтому вы можете цепочки вызовов .set()
.
const map = new Map();
console.log(map.get(1)); // undefined
map.set(1, 2).set(3, 4);
console.log(map.get(1)); // 2
Получение количества элементов Карты
Чтобы получить число элементов карты, используйте свойство .size
:
const map = new Map([[1, 2], [3, 4]]);
console.log(map.size); // 2