Поиск…


Синтаксис

  • новая карта ([итерируемый])
  • 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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow