A map metódus
A map metódus lehetővé teszi egy megadott
függvény alkalmazását a tömb minden elemére.
Eközben a metódus nem módosítja az eredeti tömböt,
hanem egy módosítottat ad vissza.
A metódus paraméterként egy függvényt kap, amely
minden tömbelemre végrehajtódik.
Az, amit ez a függvény a return segítségével
visszaad a tömbelemhez, az lesz az elem új értéke
(lásd a példákat).
A függvénynek 3 paramétert lehet átadni.
Ha ezek a paraméterek léteznek (nem kötelezőek),
akkor az elsőbe automatikusan a tömb eleme,
a másodikba a sorszáma a tömbben
(indexe), a harmadikba pedig maga a tömb kerül.
Szintaxis
let új tömb = tömb.map(function(elem, index, tömb) {
kód
return módosított elem;
});
Példa
Hozzunk létre egy tömböt, amelynek minden eleme kétszerese a kezdeti tömb megfelelő elemének:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
A kód végrehajtásának eredménye:
[2, 4, 6, 8, 10]
Példa
Hozzunk létre egy tömböt, amelynek minden eleme így keletkezik - az elem értékét megszorozzuk a tömbbeli sorszámával:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
A kód végrehajtásának eredménye:
[0, 2, 6, 12, 20]
Példa
Szükség esetén a harmadik paraméterként átadhatjuk magát a tömböt:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// itt elérhető lesz az arr tömb
});
Példa
A map metódus használható többdimenziós
tömbök bejárására is. Legyen például adott a
következő tömb:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Járjuk be ezt a tömböt a
map segítségével és írjuk ki elemeit a konzolra:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Ennek eredményeképpen a console.log kiírja a [1,
2, 3]-t, majd a [4, 5, 6]-ot, majd
a [7, 8, 9]-et.
Amint látható, a elem változóba a
résztömbök kerülnek. Alkalmazzuk most a
map metódust minden résztömbre és emeljük
négyzetre minden elemét:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
return elem.map(function(num) {
return num * num;
});
});
console.log(result);