1. gyakorlat - Órai feladatok
Ezeket a feladatokat az első gyakorlaton közösen oldjuk meg. Mindegyik egy kicsi, önálló függvény — nincs mögöttük történet, és nem építünk belőlük alkalmazást. Ciklusokkal és feltételekkel kezdünk, majd ugyanazokat a problémákat megoldjuk tömb metódusokkal is.
Haladj sorban. Órán nem fogunk mindegyikkel végezni; ami marad, azt otthon fejezd be.
Hogyan futtasd
Töltsd le a kiinduló fájlokat, nyisd meg a mappát VS Code-ban, majd kattints jobb gombbal az index.html fájlra, és válaszd az Open with Live Server lehetőséget. Az oldal szándékosan üres — nyomd meg az F12-t, és válts a Console fülre. Ott fogsz mindent látni.
Hogyan ellenőrizd magad
Itt nincsenek automatikus tesztek. Magadat ellenőrzöd: megírod a függvényt, majd meghívod, és kiíratod az eredményt.
function double(n) {
return n * 2;
}
console.log(double(21));
A Console-ban megjelenik: 42. Minden feladat végén ott a hívás és az az érték, aminek meg kell jelennie — ezt hasonlítsd össze azzal, amit látsz. A kiinduló fájlban ezek a hívások már benne vannak, kikommentezve; ha megírtad a függvényt, vedd ki elölük a // jelet.
Ha a Console-ban undefined jelenik meg, akkor szinte biztosan lemaradt a return.
Operátorok, amikre szükséged lesz
7 % 2 // 1 - osztás maradéka
6 % 2 // 0 - tehát az `n % 2 === 0` azt jelenti: "n páros"
2 ** 3 // 8 - 2 a harmadik hatványon
5 === "5" // false - szigorú egyenlőség: az értéket ÉS a típust is nézi
Objektumok (csak az utolsó feladathoz)
A j feladatig minden tömbökkel dolgozik. A j feladathoz kell egy új dolog: az objektum. Az objektum nem sorszám, hanem név szerint tárolja az értékeket:
const person = { name: "Alice", age: 23 };
console.log(person.name); // "Alice"
console.log(person.age); // 23
person.age = 24; // érték módosítása
person.city = "Budapest"; // új érték hozzáadása
Építeni is lehet egyet a semmiből:
const counters = { small: 0, large: 0 };
counters.small = counters.small + 1;
console.log(counters); // { small: 1, large: 0 }
Ennyi elég a j feladathoz.
Kezdőcsomag
A feladatleírás és a kezdőfájlok helyi munkához előkészítve.
Tartalmazott fájlok: index.htmlindex.js
Feladatok
Rövid mondatot állít össze egy értékről és annak típusáról.
- Paraméter:
value: tetszőleges típusú érték. - Visszatérési érték:
"<érték> is a <típus>"alakú szöveg, ahol a típus az, amit atypeofoperátor ad vissza.
Sablonliterált használj, ne + összefűzést.
console.log(describeValue(42));
console.log(describeValue("hello"));
console.log(describeValue(true));
Ezt kell kiírnia:
42 is a number
hello is a string
true is a booleanEldönti, hogy két érték valóban azonos-e.
- Paraméterek:
aésb: tetszőleges típusú értékek. - Visszatérési érték:
true, ha a két érték típusa és értéke is megegyezik; egyébkéntfalse.
console.log(areSame(5, 5));
console.log(areSame(5, "5"));
console.log(areSame("web", "web"));
Ezt kell kiírnia:
true
false
true
Ha kész, próbáld ki a Console-ban: areSame(NaN, NaN). Az eredmény meglepő — megbeszéljük, miért.
Összeadja egy tömb összes számát. Ciklust használj.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: az elemek összege. Üres tömb esetén
0.
console.log(sumAll([1, 2, 3, 4]));
console.log(sumAll([]));
Ezt kell kiírnia:
10
0Csak a páros számokat adja össze. Ciklust használj, benne egy feltétellel.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: a páros elemek összege. Ha nincs ilyen,
0.
console.log(sumEven([1, 2, 3, 4, 5, 6]));
console.log(sumEven([1, 3, 5]));
Ezt kell kiírnia:
12
0Minden számot köbre emel, és az eredményeket egy új tömbbe gyűjti. Ciklust használj: hozz létre egy üres tömböt, majd push-old bele az eredményeket.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: új tömb, amely az egyes elemek köbét tartalmazza, ugyanabban a sorrendben. Az eredeti tömb nem változhat meg.
console.log(cubeAll([1, 2, 3]));
console.log(cubeAll([]));
Ezt kell kiírnia:
[1, 8, 27]
[]Pontosan ugyanaz a feladat, mint a cubeAll, de ciklus helyett a map tömb metódussal megírva.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: új tömb az egyes elemek köbével.
Ennek a függvénynek és az e feladatban megírt cubeAll-nak azonos bemenetre azonos eredményt kell adnia. Az egyik ciklus, a másik egyetlen sor — pontosan ez az összehasonlítás a feladat lényege.
console.log(cubeAllWithMap([1, 2, 3]));
Ezt kell kiírnia:
[1, 8, 27]Csak a páros számokat tartja meg. A filter tömb metódust használd.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: új tömb, amely csak a páros elemeket tartalmazza, eredeti sorrendben.
console.log(evenNumbers([1, 2, 3, 4, 5, 6]));
console.log(evenNumbers([1, 3, 5]));
Ezt kell kiírnia:
[2, 4, 6]
[]Megtartja a páros számokat, és köbre emeli őket. Fűzd egymás után a filter és a map hívást egyetlen kifejezésben.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: új tömb a páros elemek köbével.
console.log(cubeEvens([1, 2, 3, 4]));
Ezt kell kiírnia:
[8, 64]
Gondold végig a sorrendet: előbb szűrni és utána köbre emelni kevesebb munka, mint fordítva.
Két tömböt összefűz, és az eredmény minden számát köbre emeli. A spread szintaxist (...) használd az összefűzéshez.
- Paraméterek:
firstéssecond: két számokat tartalmazó tömb. - Visszatérési érték: új tömb, amely a
firstelemeinek köbét, majd utána asecondelemeinek köbét tartalmazza. Egyik bemeneti tömb sem módosulhat.
console.log(mergeAndCube([1, 2], [3]));
console.log(mergeAndCube([], [2]));
Ezt kell kiírnia:
[1, 8, 27]
[8]Megszámolja, hány páros és hány páratlan szám van a tömbben, és mindkettőt egyetlen objektumban adja vissza.
- Paraméter:
numbers: számokat tartalmazó tömb. - Visszatérési érték: objektum két tulajdonsággal,
evenésodd, mindkettőben az adott fajta számok darabszámával.
console.log(countByParity([1, 2, 3, 4, 5]));
console.log(countByParity([]));
Ezt kell kiírnia:
{ even: 2, odd: 3 }
{ even: 0, odd: 0 }Követelmények
- Minden feladatot függvényként írj meg,
function name(...) { ... }alakban. - A változókat
constvagyletkulcsszóval hozd létre.var-t ne használj. - Ha egy függvény tömböt ad vissza, új tömböt adjon vissza, és hagyja változatlanul a bemenetét.
- Szigorú összehasonlítást (
===és!==) használj, ne==-t és!=-t. - Mielőtt továbblépsz a következő feladatra, hívd meg a függvényt és írasd ki az eredményt — győződj meg róla, hogy tényleg a várt értéket láttad a Console-ban.