Map, filter a pod. beru ako parameter funkciu, ktora sama berie ako parameter 1 prvok nejakeho kontajneru/kolekcie. Ty si to obalil do funkcie naviac
v pripade filter ta funkcia musi vracat true/false, t.j. napr. takto
Kód: Vybrať všetko
var numbers = [15, 25, 35, 45, 55, 65, 75, 85, 95];
var filtered = numbers.filter(function(oneNumber) {
return oneNumber > 50
})
console.log(numbers)
console.log(filtered)
Ten filter postupne prejde cez vsetky cisla a na kazde samostatne vykona kod z tej funkcie (hovori sa jej lambda lebo nema meno - tiez anonymna funkcia). Lambda mu vrati true => ponechava si hodnotu, alebo false => zahadzuje hodnotu. To co ponecha zapise do samostatnej kolekcie filtered.
V pripade map ta funkcia vracia vysledok lubovolneho typu. V tvojom priklade mas v tej funkcii nespravne return statement.
opravene:
Kód: Vybrať všetko
var trips = [
{ distance: 34, time: 10 },
{ distance: 90, time: 50 },
{ distance: 59, time: 25 }
];
var speeds = trips.map(function(trip){
return trip.distance / trip.time;
});
console.log(speeds);
Tuto map prejde vsetky trips po jednom a pre kazdy samostatne vykona kod z funkcie. Vysledok zapise do samostatnej kolekcie speeds.
Vnutri funkcie chces pouzivat hlavne jej parametre, idealne nic moc naviac. Davaj si pozor na nazvy veci: co je parameter lambdy a co je nejaka premenna mimo. Idealne si nazyvaj veci tak aby bol ten nazov vo svojom bloku unikatny.