Ugrás a tartalomra

1. gyakorlat - Órai feladatok

webprogramming language-features arrays in-class

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

describeValue(value)

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 a typeof operá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 boolean

areSame(a, b)

Eldönti, hogy két érték valóban azonos-e.

  • Paraméterek: a és b: 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ént false.
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.

sumAll(numbers)

Ö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
0

sumEven(numbers)

Csak 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
0

cubeAll(numbers)

Minden 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]
[]

cubeAllWithMap(numbers)

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]

evenNumbers(numbers)

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]
[]

cubeEvens(numbers)

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.

mergeAndCube(first, second)

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 és second: két számokat tartalmazó tömb.
  • Visszatérési érték: új tömb, amely a first elemeinek köbét, majd utána a second elemeinek 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]

countByParity(numbers)

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 és odd, 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 const vagy let kulcsszó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.