Javascript metodi map(), muuta() suomeksi, luo uuden taulukon alkuperäisen taulukon pohjalta.
map(function (alkio, indeksiluku, taulukko))
function aliohjelma
alkio muuttuja
indeksiluku numero
taulukko taulukko
map() metodia käytetään usein luomaan uusi taulukko alkuperäisestä esimerkiksi lisäämällä tietoa alkioihin tai ajamalla laskusuoritus taulukossa oleville alkioille.
map() metodille annetaan parametrinä aliohjelma. Aliohjelmaa kutsutaan taulukon jokaisella alkioilla ensimmäisestä alkiosta lähtien. Aliohjelman palauttamasta arvosta tulee uuden taulukon alkio. Näin ollen uusi taulukko on aina yhtä pitkä kuin alkuperäinen taulukko.
Luodaan uusi taulukko, jossa jokainen alkio on kerrottu kahdella.
> [ 1, 2, 3, 4 ].map(alkio => alkio * 2)
[ 2, 4, 6, 8 ]
Luodaan uusi taulukko, jossa jokaiseen alkioon (objektiin) on lisätty uusi avain b, joka on yhtä isompi kuin avaimessa a oleva luku.
> [ { a: 1 }, { a: 2 } ].map(alkio => ({ ...alkio, b: alkio.a + 1 }))
[ { a: 1, b: 2 }, { a: 2, b: 3 } ]
Aliohjelmalle annetaan toisena parametrinä indeksiluku, missä ensimmäisessä parametrissä oleva alkio sijaitsee.
Luodaan uusi taulukko, jossa lisätään alkion arvoon sen indeksiluku.
> [ 1, 2, 3, 4 ].map((alkio, indeksiluku) => alkio + indeksiluku)
[ 1, 3, 5, 7 ]
Aliohjelmalle annetaan kolmantena parametrinä koko taulukko mitä käydään läpi.
Luodaan uusi taulukko, jossa alkiot ovat muutettu nolliksi, jos alkio oli pienempi tai yhtä suuri kuin taulukon ensimmäinen alkio.
> [ 2, 4, 1, 6 ].map((alkio, indeksiluku, taulukko) => alkio > taulukko[0] ? alkio : 0)
[ 0, 4, 0, 6 ]
map() metodi toimii myös objektien kanssa, jos niillä on length avain sekä pituutta vastaavat numeroavaimet. Se jättää muut kuin pituutta vastaavat avaimet läpikäymättä.
Tällöin tosin map() metodia pitää kutsua prototyypin kautta ja sen hyöty on kyseenalainen.
> objekti = { length: 2, 0: 'a', 1: 'b', 2: 'c', 'kissa': 'kati' }
> Array.prototype.map.call(objekti, alkio => alkio)
[ 'a', 'b' ]
Jätä kommentti