Metoda map() tworzy nową tablicę z wynikami wywołanej funkcji dla każdego elementu w tablicy.
Składnia
arr.map(callback[, thisArg])
Parametry
callback
- Funkcja tworząca element nowej tablicy z jednego z bieżących elementów.
currentValue
index
array thisArg
- Opcjonalnie. Obiekt do użycia jako
this
, kiedy wykonujemycallback
.
Zwracana wartość
Nowa tablica.
Opis
map
wykonuje funkcję (callback
) na każdym z elementów tablicy. Tablica traktowana jest jako "zwarte" - czyli callback
zostanie wywołane dla każdego elementu o indeksie mniejszym niż długość tablicy, nawet jeśli poszczególne indeksy nie zostały wcześniej zadeklarowane.
callback
wywoływana jest z trzema argumentami: wartością elementu, jego indeksem i tablicą która jest trawersowana.
W przypadku podania argumentu thisObject
, zostanie on przekazany jako this
przy każdym wywołaniu callback
. Gdy go brak, lub ma wartość null
, użyty zostanie obiekt globalny przyporządkowany do callback
.
map
nie modyfikuje tablicy, na której jest wywołany.
Zakres elementów przetwarzanych przez map
ustalany jest przed pierwszym wywołaniem callback
. Elementy dodane do tablicy po wywołaniu map
nie zostaną odwiedzone przez callback
. Jeśli istniejący, element tablicy zostanie zmieniony lub usunięty, wartością przekazaną do callback
będzie wartość z momentu w którym map
odwiedza dany element; elementy usunięte przed sprawdzeniem będą przekazane jako undefined
.
Przykłady
Wielkie litery łańcuchów w tablicy
Poniższy kod tworzy nową tablicę zawierającą pisaną wielkimi literami wersję wszystkich oryginalnych łańcuchów.
var strings = ["hello", "Array", "WORLD"]; function makeUpperCase(v) { return v.toUpperCase(); } var uppers = strings.map(makeUpperCase); // uppers są teraz pisane wielkimi literami ["HELLO", "ARRAY", "WORLD"] // strings są niezmienione
Mapowanie tablicy liczb do tablicy pierwiastków kwadratowych
Poniższy kod pobiera tablicę liczb i tworzy nową tablicę z pierwiastkami kwadratowymi liczb z pierwszej tablicy.
var liczby = [1, 4, 9]; var pierwiastki = liczby.map(Math.sqrt); // otrzymane pierwiastki [1, 2, 3] // pozostające nadal liczby [1, 4, 9]