๋ฌด์์๋ก ์ ์ฌ ๋ฉ๋ด๋ฅผ ์ถ์ฒํ๊ณ ์ถ์ ๋ ์ด๋ป๊ฒ ํ ๊น์? Math.random() ํจ์์ Object.keys() ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ์ ์ฌ ๋ฉ๋ด ์ค ํ๋๋ฅผ ๋๋คํ๊ฒ ์ ํํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ๊ณ ๋๋ค ์ซ์๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
๋จผ์ , ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ ํค๋ ์์์ ํ์ ๋ํ๋ด๋ฉฐ, ๊ฐ ๊ฐ์ ํด๋น์์์ ์ด๋ฆ๊ณผ ์ด๋ฏธ์งURL ์ ํฌํจํ๊ณ ์์ต๋๋ค.
const lunchChoice = {
hansik: {name: "๋น๋น๋ฐฅ", image: "https://kormedi.com/wp-content/uploads/2024/09/gettyimages-a11354394.jpg"},
chineseFood: {name: "์ง์ฅ๋ฉด", image: "https://cdn.kormedi.com/wp-content/uploads/2021/10/r658x041.jpg"},
westernFood: {name: "ํ์คํ", image: "https://cdn.imweb.me/upload/S20230403a6b69b7e354a4/c1e4ca23c29de.jpg"}
};
1. ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ดํํ๊ธฐ
์ด์ Object.keys() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ lunchChoice ๊ฐ์ฒด์ ๋ชจ๋ ํค๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํฉ๋๋ค:
const keys = Object.keys(lunchChoice);
2. Math.random ํจ์๋ก ๋๋คํ ์ซ์ ๋ฐ๊ธฐ
keys ๋ฐฐ์ด์์ ๋๋คํ ์ธ๋ฑ์ค๋ฅผ ์ ํํ ๋ Math.random() ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ํจ์๋ 0 ์ด์ 1๋ฏธ๋ง์ ๋๋คํ ์์๋ฅผ ์์ฑํ๊ณ , ์ด ๊ฐ์ keys.length์ ๊ณฑํ์ฌ ๋ฐฐ์ด์ ๋ฒ์ ๋ด์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ์ป์ต๋๋ค. ์ดํ Math.floor() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ์๋๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ, ๋ฐฐ์ด์ ์ ํจํ ์ธ๋ฑ์ค๋ฅผ ์ต์ข ์ ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํตํด ๋ฐฐ์ด ๋ด์ ๋๋คํ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค:
const randomIndex = Math.floor(Math.random() * keys.length);
const randomLunch = lunchChoice[keys[randomIndex]];
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด lunchChoice ๊ฐ์ฒด ๋ด์ ๋๋คํ ์ ์ฌ ๋ฉ๋ด๋ฅผ randomLunch ๋ณ์์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ฐ์ฒด์ name๊ณผ image ์์ฑ์ ํ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
console.log(`์ค๋์ ์ ์ฌ ์ถ์ฒ ๋ฉ๋ด๋ ${randomLunch.name}์
๋๋ค!
๋ฉ๋ด์ ์ฌ์ง์ ๋ณด๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์: ${randomLunch.image}`);
์ด ๋ฐฉ๋ฒ์ ํ์ฉํ๋ฉด ๋ค์ํ ์ ์ฌ ๋ฉ๋ด๋ฅผ ๋๋คํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] hasOwnProperty ๊ฐ์ฒด ์์ฑ ํ์ธํ๊ธฐ (0) | 2025.04.03 |
---|---|
[JavaScript] ์ฆ์ ์คํ ํจ์ ํํ์(IIFE) ์ด๋? (0) | 2025.04.02 |
[JavaScript] new Set()๊ณผ has() ์ค๋ณต์๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ (0) | 2025.04.02 |
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด ๋ฉ์๋ ๋น๊ต ๋ฐ ํ์ฉ - findIndex, includes (0) | 2025.03.27 |
[JS] ํด๋ก์ (Closures)์ ๋ฆฌ์กํธ์ ํ (useState)์ ๊ด๊ณ (0) | 2025.01.19 |