map js

Sekcia o programovaní, programovacích jazykoch...
Užívateľov profilový obrázok
JurajSlovakID
Používateľ
Používateľ
Príspevky: 535
Dátum registrácie: Po 13. Apr, 2015, 09:35

map js

Príspevok od užívateľa JurajSlovakID » So 31. Okt, 2020, 10:57

mam tu taky priklad,
preco mi pise NaN?

Kód: Vybrať všetko

var trips = [
    { distance: 34, time: 10 },
    { distance: 90, time: 50 },
    { distance: 59, time: 25 }
  ];
  
  var speeds = trips.map(function(speed){
      return speed = trips.distance / trips.time;
    });

  console.log(speeds);
PC: CPU: RYZEN 3900X @ 4350 1.28V @ 24vlakien, Chladic Kraken X72, RAM: G.SKill Tritent Z NEO 3800 CL14 RGB CR 2T, GFX: 2X AMD Vega64, MB:asus hero VII X470, M.2 SSD Samsung 970 PRO 500GB

Užívateľov profilový obrázok
JurajSlovakID
Používateľ
Používateľ
Príspevky: 535
Dátum registrácie: Po 13. Apr, 2015, 09:35

Re: map js

Príspevok od užívateľa JurajSlovakID » So 31. Okt, 2020, 12:20

dalsi priklad

Kód: Vybrať všetko

var numbers = [15, 25, 35, 45, 55, 65, 75, 85, 95];
function(numbers){
    return numbers.filter(function(number){
        return numbers
    })
};
neviem sa dalej pohnut ako to ma byt oni tam maju strasne zly support pre tie priklady..
chcem pomocou helpera filter odfiltrovat len sumy vacsie ako 50, dik.

dokazal som to sam za par minut...

Kód: Vybrať všetko

var numbers = [15, 25, 35, 45, 55, 65, 75, 85, 95];
var greater = numbers.filter(function(numbers){
return numbers > 50;
});
console.log(greater);
PC: CPU: RYZEN 3900X @ 4350 1.28V @ 24vlakien, Chladic Kraken X72, RAM: G.SKill Tritent Z NEO 3800 CL14 RGB CR 2T, GFX: 2X AMD Vega64, MB:asus hero VII X470, M.2 SSD Samsung 970 PRO 500GB

Užívateľov profilový obrázok
M1ch4l
VIP
VIP
Príspevky: 6337
Dátum registrácie: Št 21. Feb, 2008, 14:00
Bydlisko: Kysucký Lieskovec / Praha

Re: map js

Príspevok od užívateľa M1ch4l » So 31. Okt, 2020, 13:09

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.
Music: AKG K240 MK II / Beyerdynamic DT 770 Pro 80 Ohm @ NuForce uDAC v2
Bike: Scott Aspect 20 2012 black/green; Coffee: Chemex 6-cup
Spoiler: ukázať
CPU i7 4790K bez OC + Noctua U12S; MB Sabertooth Z97 Mark 2; RAM HyperX Fury 16 GB; GPU RTX 2070 Armor; OS SSD 860 Evo 500GB; Storage 860 QVO 2TB, WD Black 2TB; PSU Seasonic G550; CASE Define R4 Arctic White Window; Peripherals Aorus AD27QD + DELL U2311H, Logitech G513 Carbon linear, Logitech G903 + Razer Destructor 2, Blue Snowball

Napísať odpoveď

Návrat na "Programovanie"