[JavaScript30] 7. Array Cardio Practice (2) | .some(), .every(), .find() and [...SPREADS]

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ ์ฃผ์–ด์ง„ data๋“ค์„ ๊ฐ€์ง€๊ณ , ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฐ๊ด๊ฐ’์„ console ์ฐฝ์— ๋„์šด๋‹ค. ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ ๋จผ์ €, ์ฃผ์–ด์ง„ data๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. const people = [ { name: 'Wes', year: 1988 }, { name: 'Kait', year: 1986 }, { name: 'Irv', year: 1970 }, { name: 'Lux', year: 2015 } ] const comments = [ { text: 'Love this!', id: 523423 }, { text: 'Super good', id: 823423 }, { text: 'You are the best', id: 2039842 }, { text: 'Ramen is my fav food ever', id: 123523 }..

    [JavaScript30] 6. AJAX Type Ahead with fetch() | fetch(), Spread Operator, RegExp

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ input์ฐฝ์— ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ์ผ์น˜ํ•˜๋Š” city๋‚˜ state์˜ ๊ฐ’์„ ํ•˜๋‹จ์— ์ถœ๋ ฅํ•œ๋‹ค. โœจ ๊ฒฐ๊ณผํ™”๋ฉด ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ ๐Ÿ™„ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ ๋ฉฐ์น ๊ฐ„ ์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ณด๋ฉด์„œ ํ—ค๋งธ๋Š”๋ฐ, json ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ city, state, population ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ด๊ณ  if๋ฌธ์œผ๋กœ ์กฐ๊ฑด์„ ์ฃผ๋Š” ๊ฒƒ๊นŒ์ง€ ์ž‘์„ฑํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‚ด๊ฐ€ ์“ด ์ฝ”๋“œ๋Š” ํ•œ li์•ˆ์— ์ถ”์ถœ๋œ ๋ชจ๋“  object๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”(;;;) ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ฒฐ๋ก ์€ ์ „๋ฐ˜์ ์œผ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๋”ฐ๋ผ ์ณ๋ณด๋ฉด์„œ ์™„์„ฑ์‹œ์ผœ๋ณธ ๋‹ค์Œ, ๊ฐœ์ธ์ ์œผ๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๐Ÿค— ๊ฐœ์„ ๋œ ๊ฐ•์˜ ์ฝ”๋“œ HTML Filter for a city or a state JS const endpoint = "https://gist.githubuserco..

    [JavaScript30] 5. Flexbox + JavaScript Image Gallery

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ panel๋“ค์„ ๋‹ด๊ณ ์žˆ๋Š” div๋Š” ํ™”๋ฉด์„ ๊ฝ‰ ์ฑ„์šฐ๊ณ , ์ฒ˜์Œ์—๋Š” ๊ฐ๊ฐ์˜ panel๋“ค์ด ํ™”๋ฉด์„ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ์ด ๋™์ผํ•˜๋‹ค. ๊ฐ panel๋“ค์„ ํด๋ฆญํ•˜๋ฉด ํด๋ฆญ๋œ ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋น„์œจ, ํฐํŠธ ๋“ฑ์ด ๋ณ€ํ™”ํ•˜๊ณ  ์œ„์•„๋ž˜ ํ…์ŠคํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค. ํด๋ฆญ๋œ panel์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜๋ฉด ์ ์šฉ๋˜์—ˆ๋˜ ํšจ๊ณผ๋“ค์ด ์ดˆ๊ธฐํ™” ๋œ๋‹ค. ์œ„์˜ ๋™์ž‘๋“ค์„ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•œ๋‹ค. โœจ ๊ฒฐ๊ณผํ™”๋ฉด ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ ๐Ÿ“Œ ์ฃผ์–ด์ง„ HTML Hey Let's Dance Give Take Receive Experience It Today Give All You can Life In Motion ๐Ÿ™„ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ CSS html { box-sizing: border-box; background: #ffc600; font-family: "helvetica neue..

    [JavaScript30] 4. Array Cardio Practice (1)

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ ์ฃผ์–ด์ง„ data๋“ค์„ ๊ฐ€์ง€๊ณ , ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฐ๊ด๊ฐ’์„ console ์ฐฝ์— ๋„์šด๋‹ค. ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ ๋จผ์ €, ์ฃผ์–ด์ง„ data๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. // Some data we can work with const inventors = [ { first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 }, { first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 }, { first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 }, { first: 'Marie', last: 'Curie', year: 1867, passed: 1934 }, { first: 'Johan..

    [JavaScript30] 3. CSS Variables | CSS ๋ณ€์ˆ˜, setProperty()

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ spacing, blur, base color์— ๋Œ€ํ•œ input์„ ๋งˆ์šฐ์Šค๋กœ ์กฐ์ ˆํ•˜๋ฉด, ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์œผ๋กœ CSS ์š”์†Œ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค. css variable์„ ์‚ฌ์šฉํ•œ๋‹ค. ์œ„์˜ ์ด๋ฒคํŠธ๋Š” ๋งˆ์šฐ์Šค๊ฐ€ ์›€์ง์ž„์— ๋”ฐ๋ผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค. โœจ ๊ฒฐ๊ณผํ™”๋ฉด ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ ๐Ÿ™„ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ HTML, CSS Update CSS Variables with JS ... css variable์˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด :root์— ๊ฐ๊ฐ base variable์„ ์„ ์–ธํ•ด ์ฃผ์—ˆ๊ณ , ํ•„์š”ํ•œ ์š”์†Œ์— ํ•ด๋‹น css variable์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋Œ€์ž…ํ•ด ์ฃผ์—ˆ๋‹ค. JS "use strict"; // root์— ์„ ์–ธ๋œ css variable์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์„ ์–ธ let root = document.querySelector(":roo..

    [JavaScript30] 2. Clock | setInterval(), transform, transition

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ ํ˜„์žฌ ์‹œ๊ฐ„์— ๋งž๊ฒŒ ์‹œ๊ณ„๋ฅผ ๋™์ž‘์‹œํ‚จ๋‹ค. ์ด ๋•Œ, ๋ฐ”๋Š˜์˜ ํ•œ ์ชฝ ๋์€ ๊ฐ€์šด๋ฐ์— ๊ณ ์ •๋˜์–ด ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์—ฌ์•ผ ํ•œ๋‹ค. โœจ ๊ฒฐ๊ณผํ™”๋ฉด ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ ๐Ÿ“– TIL setInterval() setInterval()์€ ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ํŠน์ • ์ฝ”๋“œ๋ธ”๋ก์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. setInterval(() => { console.log('Hello'); }, 3000); ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด, 3์ดˆ์— ํ•œ ๋ฒˆ์”ฉ Hello๊ฐ€ ์ฝ˜์†”์— ์ฐํžˆ๊ฒŒ ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ ์ง€์ •ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๊ผญ ์ต๋ช…์ผ ํ•„์š”๋Š” ์—†๊ณ , ํ•จ์ˆ˜์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฐธ์กฐ(reference)๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜, ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. function print(string) { console.log(`Hel..

    [JavaScript30] 1. Drum Kit | data-*, audio, transitionend

    ๐Ÿ“ƒ ์š”๊ตฌ์‚ฌํ•ญ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ, ๋ˆŒ๋ฆฐ ํ‚ค์—์„œ ํ•ด๋‹น ์˜ค๋””์˜ค ์†Œ๋ฆฌ๊ฐ€ ์žฌ์ƒ๋˜๊ฒŒ ํ•œ๋‹ค. ๋ˆŒ๋ฆฐ ํ‚ค ์š”์†Œ์— playing ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ • css๋ฅผ ์ ์šฉํ•œ๋‹ค. ๋ชจ๋“  ์ด๋ฒคํŠธ๊ฐ€ ๋๋‚˜๋ฉด, playing ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•œ๋‹ค. โœจ ๊ฒฐ๊ณผํ™”๋ฉด ๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ document.addEventListener("keydown", playSound); // ํ‚ค ๋ˆŒ๋ ธ์„ ๋•Œ const keys = document.querySelectorAll(".key"); // ์ด๋ฒคํŠธ ๋๋‚ฌ์„ ๋•Œ keys.forEach((key) => key.addEventListener("transitionend", removePressed)); // Key๊ฐ€ ๋ˆŒ๋ ธ์„ ๋•Œ ๋™์ž‘ํ•˜๋Š” ํ•จ์ˆ˜ function playSound(e) { const aud..

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ 4. ํด๋ž˜์Šค | ํด๋ž˜์Šค ์˜ˆ์ œ์™€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ตœ์ข… ์ •๋ฆฌ

    class Counter { constructor() { // object๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ์ˆœ๊ฐ„ ํ•  ์ผ this.counter = 0; } increase() { // ํด๋ž˜์Šค ๋‚ด ํ•จ์ˆ˜ ์„ ์–ธ์€ function ํ‚ค์›Œ๋“œ ํ•„์š” x this.counter++; console.log(this.counter); } } const coolCounter = new Counter(); coolCounter.increase(); // 1 coolCounter.increase(); // 2 coolCounter.increase(); // 3 coolCounter.increase(); // 4 coolCounter.increase(); // 5 class Counter { constructor() { // object๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”..