[[oktatas:web:javascript|< JavaScript]] ====== JavaScript haladó ====== * **Szerző:** Sallai András * Copyright (c) 2021, Sallai András * Szerkesztve: 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Írás a konzolra ===== A böngésző-konzolra több módon is írhatunk a JavaScript nyelvben. A következő függvények használhatók: console.log('log'); console.info('info'); console.debug('debug'); console.warn('warn'); console.error('error'); A különféle típusok, ugyanúgy kiírják az adott üzenetet, de az üzenet elé tehetnek egy ikont, vagy színezhetik a kimenetet. A következő ábrán, erre láthatunk példát: {{:oktatas:web:javascript:javascrijpt_console.png|}} ==== CSS konzolon ==== A %c segítségével stílus határozható meg a konzol számára. console.log('egy%ckettő', 'color: blue; font-size: x-large'); A stílusbeállítás mindig a %c utáni részre vonatkozik. ==== Behelyettesítés ==== console.log('A %s dolgozó fizetése %f\n', "Nagy János", 25.123); * %s - szöveg * %d - egész * %f - valós ==== Törlés ==== Konzol törlése: console.clear() ==== dir() ==== Objektum JSON formátumban: const janos = { "name":"Nagy János", "fizetes":8450000 }; console.dir(janos); {{:oktatas:web:javascript:object_json_reprezentacio.png|}} ==== Táblázat ==== const dolgozok = [{ "name":"Nagy János", "fizetes":8450000 },{ "name":"Pere Mária", "fizetes":6450000 },{ "name":"Csontos Ferenc", "fizetes":7455000 } ]; console.table(dolgozok); {{:oktatas:web:javascript:tablazat.png|}} ===== Nyílfüggvények ===== * Nincs kapcsolata this-hez vagy a super-hez és nem használható metódusként. * Nincsenek argumentumai, de new.target kulcsszavak sem. * Nem alkalmas call, apply és bind metódusoknak, amelyek egy hatókörön (scope) alapszanak. * Nem használható konstruktorként. * Nem használhat yield-t, a body-in belül. ==== Példa ==== let szamok = [ 45, 67, 25, 11, 85 ]; console.log(szamok.map(szam => szam<5)); Eredmény: * [false, false, false, false, false] let gyumolcsok = [ 'alma', 'körte', 'barack', 'szilva', 'málna' ]; console.log(gyumolcsok.map(gyumolcs => gyumolcs.length)); Eredmény: * [4, 5, 6, 6, 5] ==== A normál függvény és a nyílfüggvény ==== let dupla1 = function (szam) { return szam * 2; } let dupla2 = (szam) => { return szam * 2; } console.log(dupla1(3)); console.log(dupla2(4)); ===== Template string tag-gel ===== ES6-tól. let szoveg = sajat_tag`ąlma`; function sajat_tag(s) { return 'szilva'; } console.log(szoveg); ===== reduce() ===== const numbers = [3, 4, 2]; const reducer = (prev, curr) => prev + curr; console.log(numbers.reduce(reducer)); Kimenet: 9 Összeadja a tömb elemeit. * Több információ: * [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce|developer.mozilla.org]] ===== map() ===== Minden elemmel teszünk valamit és az eredményt egy újabb tömbben kapjuk. const szamok = [3, 8, 4] const dupla_szamok = szamok.map(item => item * 2); console.log(dupla_szamok); A kimenet: [ 6, 16, 8 ] Hivatkozás: * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map (2021) ===== filter() ===== Csak bizonyos elemeket szeretnénk, egy feltétel alapján: const szamok = [3, 8, 4, 9] const otnelnagyobb_szamok = szamok.filter(item => item > 5 ); console.log(otnelnagyobb_szamok); Kimenet: [ 8, 9 ] ===== A Map típus ===== A Map() olyan mint az Object, kivéve, hogy a kulcsok bármilyen típusúak lehetnek. var map1 = new Map(); map1.set('gyumolcs', 'alma'); map1.set('zoldseg', 'paprika'); var map2 = new Map(); map2.set('3', 'egy'); map2.set(4, 'kettő'); map2.set(true', 'három'); Függvények: * map.set(kulcs, érték) - érték tárolása kulcs alapján * map.get(kulcs) - visszatér kulcshoz tartozó értékkel, ha nem létezik undefined * map.has(kulcs) - true ha van ilyen kulcs, ellenben false * map.delete(kulcs) - törlés kulcs alapján * map.clear() - minden elem törlése * map.size - az elemek száma ===== Kollekciók bejárása ===== tomb.forEach(elem => { console.log(elem); }); Az első elem nélkül: tomb.forEach((elem, index) => { if(index>0) { console.log(elem); } }); Az első elem nélkül újra: tomb.slice(1).forEach((elem) => { console.log(elem); }); A tömbben csak az első elem marad. Az 1 indextől minden törlődik. ===== Generátor függvények ===== function* square(start, end) { for (let i = start; i <= end; i++) { yield i * 2; } } const generator = square(1, 5); console.log(generator.next().value); // 2 console.log(generator.next().value); // 4 console.log(generator.next().value); // 6 console.log(generator.next().value); // 8 console.log(generator.next().value); // 10 console.log(generator.next().done); // true ===== isNaN() függvény ===== Az isNaN() függvény megvizsgálja, hogy a bemenet szám vagy nem szám: if(!isNaN(szam)) { //tevékenység } ===== Forrás ===== * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions (2021) * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield (2021) * https://medium.com/javascript-in-plain-english/mastering-js-console-log-like-a-pro-1c634e6393f9 (2021) * https://javascript.info/map-set (2022)