Szukaj…


Składnia

  • nowa mapa ([iterowalna])
  • map.set (klucz, wartość)
  • map.get (klucz)
  • rozmiar mapy
  • map.clear ()
  • map.delete (klucz)
  • map.entries ()
  • map.keys ()
  • map.values ()
  • map.forEach (callback [, thisArg])

Parametry

Parametr Detale
iterable Dowolny obiekt iterowalny (na przykład tablica) zawierający pary [key, value] .
key Klucz elementu.
value Wartość przypisana do klucza.
callback Funkcja wywołania zwrotnego wywoływana z trzema parametrami: wartością, kluczem i mapą.
thisArg Wartość, która będzie używana jako this podczas wykonywania callback .

Uwagi

W Mapach NaN jest uważany za taki sam jak NaN , mimo że NaN !== NaN . Na przykład:

const map = new Map([[NaN, true]]);
console.log(map.get(NaN)); // true

Tworzenie mapy

Mapa to podstawowe mapowanie kluczy na wartości. Mapy różnią się od obiektów tym, że ich klucze mogą być dowolne (wartości pierwotne, a także obiekty), a nie tylko ciągi znaków i symbole. Iteracja nad mapami odbywa się zawsze w kolejności, w której elementy zostały wstawione do mapy, podczas gdy kolejność jest niezdefiniowana podczas iteracji po kluczach w obiekcie.

Aby utworzyć mapę, użyj konstruktora map:

const map = new Map();

Ma opcjonalny parametr, którym może być dowolny obiekt iterowalny (na przykład tablica), który zawiera tablice dwóch elementów - pierwszy to klucz, drugi to wartość. Na przykład:

const map = new Map([[new Date(), {foo: "bar"}], [document.body, "body"]]);
//                      ^key          ^value          ^key        ^value

Czyszczenie mapy

Aby usunąć wszystkie elementy z mapy, użyj metody .clear() :

map.clear();

Przykład:

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

Usuwanie elementu z mapy

Aby usunąć element z mapy, użyj metody .delete() .

map.delete(key);

Przykład:

const map = new Map([[1, 2], [3, 4]]);
console.log(map.get(3)); // 4
map.delete(3);
console.log(map.get(3)); // undefined

Ta metoda zwraca wartość true jeśli element istniał i został usunięty, w przeciwnym razie false :

const map = new Map([[1, 2], [3, 4]]);
console.log(map.delete(1)); // true
console.log(map.delete(7)); // false

Sprawdzanie, czy klucz istnieje na mapie

Aby sprawdzić, czy klucz istnieje na mapie, użyj metody .has() :

map.has(key);

Przykład:

const map = new Map([[1, 2], [3, 4]]);
console.log(map.has(1)); // true
console.log(map.has(2)); // false

Iterowanie map

Mapa ma trzy metody, które zwracają iteratory: .keys() , .values() i .entries() . .entries() jest domyślnym iteratorem mapy i zawiera pary [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
}

Mapa ma również .forEach() . Pierwszy parametr to funkcja wywołania zwrotnego, która zostanie wywołana dla każdego elementu na mapie, a drugi parametr to wartość, która zostanie użyta jako this podczas wykonywania funkcji wywołania zwrotnego.

Funkcja zwrotna ma trzy argumenty: wartość, klucz i obiekt mapy.

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

Pobieranie i ustawianie elementów

Użyj .get(key) aby uzyskać wartość według klucza, i .set(key, value) aby przypisać wartość do klucza.

Jeśli element z określonym kluczem nie istnieje na mapie, .get() zwraca undefined .

Metoda .set() zwraca obiekt mapy, dzięki czemu można łączyć wywołania .set() .

const map = new Map();
console.log(map.get(1)); // undefined
map.set(1, 2).set(3, 4);
console.log(map.get(1)); // 2

Uzyskiwanie liczby elementów mapy

Aby uzyskać liczbę elementów mapy, użyj właściwości .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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow