Array.prototype.map()
Metoda map()
tworzy nową tablicę zawierającą wyniki wywoływania podanej funkcji dla każdego elementu wywołującej tablicy.
var liczby = [1, 5, 10, 15];
var podwojenia = liczby.map(function(x) {
return x * 2;
});
// podwojenia to teraz [2, 10, 20, 30]
// liczby to dalej [1, 5, 10, 15]
var liczby = [1, 4, 9];
var pierwiastki = liczby.map(Math.sqrt);
// pierwiastki to teraz [1, 2, 3]
// liczby to dalej [1, 4, 9]
Składnia
var new_array = arr.map(function callback(currentValue, index, array){ // Zwróć element nowej tablicy }[, thisArg])
Parametry
callback
- Funkcja tworząca element nowej tablicy, przyjmująca trzy argumenty:
-
currentValue
- Element tablicy nad którym obecnie pracujemy
index
- Indeks elementu tablicy nad którym obecnie pracujemy
array
- Oryginalna tablica na rzecz której wywołano metodę
map
thisArg
- Opcjonalny. Wartość jaką użyć jako
this
podczas wywołaniacallback
Zwracana wartość
Nowa tablica zawierająca elementy będące wynikami wywoływani funkcji callback
.
Opis
map
wykonuje funkcję (callback
) raz na każdym z elementów tablicy w kolejności i tworzy nową tablicę na podstawie wyników. callback
wywoływany jest tylko dla indeksów tablicy które mają przypisane wartości, włącznie z undefined. Nie jest wywoływany dla brakujących elementów tablicy (indeksów które nigdy nie były ustawione, usunięte lub nie miały nigdy przypisanych wartości).
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]