JavaScript
Funktionaalinen ohjelmointi JavaScriptissä: map, filter, find, forEach
JavaScriptin taulukot tarjoavat monia sisäänrakennettuja metodeja taulukkomuotoisen datan käsittelyyn. Näistä keskeisimmät menetelmät ovat:
- .push() – lisää uuden alkion taulukon loppuun
- .pop() – poistaa viimeisen alkion taulukon lopusta
- .shift() - lisää alkion taulukon alkuun
- .unshift() – poistaa alkion taulukon alusta alusta
- .map() – luo uuden taulukon muunnetuista arvoista
- .filter() – palauttaa vain ehdon täyttävät alkiot
- .reduce() - yhdistää alkiot
- .find() – etsii ja palauttaa ensimmäisen osuman
- .forEach() – käy kaikki alkiot läpi ilman paluuarvoa
Nämä metodit käyttävät usein funktio-ilmaisuja tai nuolifunktioita (arrow functions), jotka tekevät koodista tiiviimpää ja luettavampaa.
Funktioiden käyttö taulukkometodeissa, kuten map, filter ja reduce, vie JavaScriptin funktionaaliseen ohjelmointiin ja tekee koodista tiiviimpää, selkeämpää ja helpommin ylläpidettävää.
array.forEach() - toista toiminto jokaiselle alkiolle
forEach() suorittaa annetun toiminnon jokaiselle taulukon alkiolle.
Sitä käytetään, kun halutaan tehdä jotain jokaiselle taulukkoon tallennetulle arvolle jokin toiminto.
Seuraava esimerkki tulostaa konsoliin listauksen hedelmistä:
let hedelmat = ["omena", "banaani", "appelsiini"];
hedelmat.forEach(function(hedelma) {
console.log("Hedelmä: " + hedelma);
});
array.map() – Luo uusi taulukko muutetuista arvoista
map()-metodi käy jokaisen taulukon alkion läpi ja palauttaa uuden taulukon muunnetuista arvoista ilman että alkuperäinen taulukko muuttuisi.
let hedelmat = ["omena", "banaani", "appelsiini"];
let isotKirjaimet = hedelmat.map(function(hedelma) {
return hedelma.toUpperCase();
});
console.log(isotKirjaimet); // ["OMENA", "BANAANI", "APPELSIINI"]
Map()-menetelmä on erittäin keskeinen funktionaalisessa ohjelmoinnissa, koska se tekee datan käsittelystä selkeää, luettavaa ja tehokasta muuttamatta alkuperäistä dataa.
array.filter() – Suodattaa ehdon täyttävät arvot
filter() palauttaa uuden taulukon vain niistä arvoista, jotka täyttävät annetun ehdon.
let hedelmat = ["omena", "banaani", "kiivi", "meloni"];
let pituusyli5 = hedelmat.filter(function(hedelma) {
return hedelma.length > 5;
});
console.log(pituusyli5); // ["banaani", "meloni"]
array.find() – Palauttaa ensimmäisen sopivan arvon
find() palauttaa ensimmäisen arvon, joka täyttää ehdon. Jos sopivaa arvoa ei löydy, palautetaan undefined.
Huomaathan, että find soveltuu vain tilanteisiin joissa haetaan ensimmäistä osumaa.
Jos etsit kaikkia täsmääviä arvoja edellä esitelty filter()on parempi työkalu.
let hedelmat = ["omena", "banaani", "kiivi", "meloni"];
let alkaaK = hedelmat.find(function(hedelma) {
return hedelma.startsWith("k");
});
console.log(alkaaK); // "kiivi"
array.reduce() - yhdistää alkiot
reduce()-metodi suorittaa toiminnot taulukon jokaiselle alkiolle ja palauttaa yksittäisen arvon. Tämä on erittäin tehokas tapa laskea summia tai yhdistää arvoja.
const luvut = [1, 2, 3, 4];
const summa = luvut.reduce(function(acc, luku) {
return acc + luku;
}, 0);
console.log(summa); // 10
array.push() ja array.pop() – Lisää tai poistaa taulukon lopusta
push()-menetelmä lisää uuden alkion taulukon loppuun, pop() poistaa taulukon viimeisen alkion.
Nämä perustoiminnot ovat olennaisia, kun työskennellään esimerkiksi jonojen (queu) tai pinojen (stack) kanssa.
let hedelmat = ["omena", "banaani"];
hedelmat.push("appelsiini");
console.log(hedelmat); // ["omena", "banaani", "appelsiini"]
hedelmat.pop();
console.log(hedelmat); // ["omena", "banaani"]
array.shift() ja array.unshift() – Lisää tai poistaa taulukon alusta
Shift() ja unshift() toimivat kuten pop() ja push(), mutta niiden vaikutus kohdistuu taulukon alkuun.
let hedelmat = ["omena", "banaani"];
hedelmat.unshift("kiivi");
console.log(hedelmat); // ["kiivi", "omena", "banaani"]
hedelmat.shift();
console.log(hedelmat); // ["omena", "banaani"]