[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๋๋ค ์ซ์, ๋ฐ์ดํฐ ์์ฑ ์์
๋๋ค ๊ฒ์๊ธ(ํน์ ๋๊ธ)์ ๊ตฌํํ๋ค๊ณ ๊ฐ์ , ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฌ๊ฐ์ ์ ์ ์ด๋ฆ, ๋ฉ์์ง ํ
์คํธ๊ฐ ํ์ํ๋ค. ์ ์ ์ด๋ฆ์ด๋ ๋๋ค ํ
์คํธ๋ ์๋ฌธ Lorem์ฒ๋ผ ์๋ ์์ฑํด์ฃผ๋ ์ฌ์ดํธ๋ฅผ ํ์ฉํ๋ฉด ๋๋ค. 10๊ฐ ์ ๋ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ํ ์๋ฐ์คํฌ๋ฆฝํธ์ Math.random
์ ํ์ฉํ๋ฉด ์ ์ ๋ณ๋ก ๋ค๋ฅธ ๋ฉ์์ง ํ
์คํธ๋ฅผ ์์ฑํ ์ ์๋ค.
ํ์ํ ๋ฐ์ดํฐ ๋ฆฌ์คํธ
- ์ ์ ์ด๋ฆ : ํ๊ธ ๋๋ค ์ด๋ฆ ์์ฑ๊ธฐ ์ด์ฉ
const randomUser = ['์์ธํฌ', 'ํ์ ์', '์ ๊ฐ์งํ', '์ฌ์ฑํ', ...]
- ๋ฉ์์ง ํ ์คํธ : ํ๊ธ Lorem ์ฌ์ดํธ์ธ ๊ฐ์ธ๋ค ํน์ ํ๊ธ์ ์จ ์ด์ฉ
const randomMessage = ['๊ด์ผ์์ ๋ฌด์์ ๋ณด๋ด๋...', '...', '...', ...]
- ์์ฑ์ผ :
new Date()
์ด์ฉ
๋๋ค ์ซ์ ์์ฑ ํจ์ โญ๏ธ
`Math.random()`๊ณผ `Math.floor()`๋ฅผ ์ด์ฉํ์ฌ ์ง์ ํ ์ต๋ ์ซ์ ๋ฏธ๋ง(ํน์ ์ดํ)์ ์ ์(์์์ ์ด ์๋)๋ก ๋ ๋์๋ฅผ ์์ฑํ ์ ์๋ค.
// min ์ด์ max ๋ฏธ๋ง์ ๋๋ค ์ซ์ ์์ฑ(max ๋ฏธํฌํจ)
const getRandomInt = function (min, max) {
return Math.floor(Math.random() * (max - min)) + min;
};
getRandomInt(4, 5); // 4
getRandomInt(3, 5); // 3~4
getRandomInt(2, 5); // 2~4
๋ฉ์๋ ์ค๋ช
Math.random()
: 0 ์ด์ ~ 1๋ฏธ๋ง ๋ถ๋ ์์ซ์ ๋์ ์์ฑ (0.932322...
)- 1 ๋ฏธ๋ง์ด๋ฏ๋ก
Math.random()
์ ๊ณฑํ ์๋ฅผ ๋์ง ์๋๋ค.0.9 * 2 = 1.8
0.8 * 2 = 1.6
Math.floor()
: ์์์ ๋ฒ๋ฆฌ๊ณ ๊ฐ์ฅ ํฐ ์ ์ ๋ฐํ
Math.floor(5.95); // 5
Math.floor(-5.05); // -6 (-5๋ณด๋ค -6์ด ์์ผ๋ฏ๋ก)
Math.floor(0.2); // 0
Math.floor(-0.2); // -1 (-0.2๋ณด๋ค -1์ด ๋ ์๋ค)
์๋ฆฌ
max
๋8
,min
์2
๋ผ๊ณ ๊ฐ์ ํ๊ณ ์ด ๋์ ๋นผ๋ฉด ๋ ์ ์ฌ์ด์ ์ฐจ์ด๊ฐ6
์ด ๋์จ๋ค.- ์ฐจ์ด๊ฐ
6
์Math.random()
์ ๊ณฑํ๋ฉด ํญ์0 ~ 5.999...
์ฌ์ด์ ๊ฐ์ ๋ฐํํ๋ค. - ์๋ฅผ๋ค์ด
Math.random()
๊ฐ์ด0.999
์ด๋ฉด6 * 0.999 = 5.994
๊ฐ ๋๋ค. Math.floor()
๋ฅผ ์ด์ฉํด ์์์ ์ ๋ฒ๋ฆฌ๋ฉด5
๊ฐ ๋๋ค.- ์ฌ๊ธฐ์
min
๊ฐ2
๋ฅผ ๋ํ๋ฉด5 + 2 = 7
์ด ๋๋ค. - ๋ง์ฝ
Math.random()
๊ฐ์ด0.1
์ด๋ผ๋ฉด0.1 * 6 = 0.6
์ด๊ณ ,Math.floor()
๋ฅผ ์ ์ฉํด์ ์์์ ์ ๋ฒ๋ฆฌ๋ฉด0
์ด ๋๋ค. ์ฌ๊ธฐ์min
๊ฐ์ ๋ํ๋ฉด ํญ์min
์ด์์ด ๋๋๋ก ๋ณด์ฅํ ์ ์๋ค. - ์ ๊ณผ์ ์ ํตํด ํญ์
min ~ max - 1
์ฌ์ด์ ๋์๋ฅผ ์ป์ ์ ์๋ค
์ฐธ๊ณ
max
์๊น์ง ํฌํจํ ๋์๋ฅผ ๋ง๋ค๋ ค๋ฉด max - min
์ 1
์ ๋ํด์ค๋ค.
Math.floor(Math.random() * (max - min + 1)) + min; // max ํฌํจ
Math.floor(Math.random() * (max - min)) + min; // max ๋ฏธํฌํจ
Lodash ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ random
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฐํธํ๊ฒ ๋์๋ฅผ ๋ง๋ค ์ ์๋ค.
_.random(1, 999); // 1~999 ์ฌ์ด์ ๋์ ์์ฑ
_.random(10); // 0~10 ์ฌ์ด์ ๋์ ์์ฑ(ํ๋์ ์ธ์๋ง ๋๊ธฐ๋ฉด 0์ด ๊ธฐ๋ณธ๊ฐ์ด ๋จ)
๋๋ค ์ ์ / ์ฝ๋ฉํธ ์์ฑ
"0 ์ด์ ~ randomUser ๋ฐฐ์ด length ๋ฏธ๋ง"์ ๋๋ค ์ซ์ ์์ฑ ํ, ํด๋น ์ซ์๋ฅผ ์ธ๋ฑ์ค๋ก ์ ์ ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค.
const comment = {};
comment.userName = randomUser[getRandomInt(0, randomUser.length)];
๋๋ค ์ฝ๋ฉํธ ์ญ์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ธ์จ๋ค
comment.message = randomMessage[getRandomInt(0, randomMessage.length)];
๋ ์ง ํฌ๋งท ๋ณ๊ฒฝ ํจ์
new Date()
๋ก ๋ ์ง ๊ฐ์ฒด ์์ฑ ํ ์์ฑํ ๋ ์ง ๊ฐ์ฒด๋ ํฌ๋งท ๋ณ๊ฒฝ ํจ์๋ฅผ ๋ง๋ค์ด 2021-02-11 10:34:22
ํ์์ผ๋ก ๋ณํํด์ ์ฌ์ฉ. ํต์ผ์ฑ์ ์ํด 10๋ฏธ๋ง์ ํ์๋ฆฌ๋ ์์ 0์ ๋ถ์ฌ ๋์๋ฆฌ๋ก ๋ฐ๊ฟ์ ๋ณด์ฌ์ฃผ๋ฉด ์ข๋ค.
// 10๋ฏธ๋ง(ํ์๋ฆฌ)์ผ๋ ์์ 0 ์ถ๊ฐํ์ฌ 2์๋ฆฌ๋ก ๋ณ๊ฒฝ
// 0 → 09
function padLeft(date) {
if (date < 10) {
return '0' + String(date);
}
return String(date);
}
// ๋ ์ง ํฌ๋งท ๋ณ๊ฒฝ ํจ์. ์ฐ๋๋ ํญ์ 4์๋ฆฌ ์ด๋ฏ๋ก padLeft ํจ์๋ก 0์ ์ถ๊ฐํ ํ์ ์๋ค.
function getFormattedDate(date) {
const yyyy = date.getFullYear();
const month = padLeft(date.getMonth() + 1);
const dd = padLeft(date.getDate());
const HH = padLeft(date.getHours());
const mm = padLeft(date.getMinutes());
const ss = padLeft(date.getSeconds());
const format = [yyyy, month, dd].join('-') + ' ' + [HH, mm, ss].join(':');
return format;
}
์ต์ข ๊ฒฐ๊ณผ๋ฌผ ์์
const generateNewComment = () => {
const comment = {};
comment.userName = randomUser[getRandomInt(0, randomUser.length)];
comment.message = randomMessage[getRandomInt(0, randomMessage.length)];
comment.created_at = getFormatDate(new Date());
return comment;
};
/*
{
userName: '์์ธํฌ',
message: '๊ด์ผ์์ ๋ฌด์์ ๋ณด๋ด๋...',
created_at: '2021-02-11 12:34:05'
}
*/
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[HTML/CSS] ์ค๋ฐ๊ฟ(๊ฐํ๋ฌธ์) ํ์ / ๋์น๋ ํ ์คํธ ์๋ต ๊ธฐํธ ํ์ ๋ฐฉ๋ฒ
[HTML/CSS] ์ค๋ฐ๊ฟ(๊ฐํ๋ฌธ์) ํ์ / ๋์น๋ ํ ์คํธ ์๋ต ๊ธฐํธ ํ์ ๋ฐฉ๋ฒ
2024.04.25 -
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฒฝ๊ณผ ์๊ฐ ํ์ / UTC / ISO 8601
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฒฝ๊ณผ ์๊ฐ ํ์ / UTC / ISO 8601
2024.04.25 -
[JS] ์บ๋ฒ์ค Canvas ๋ํ ํ๋ ์ถ์ ํ ์์ ์กฐ์ ํ๊ธฐ
[JS] ์บ๋ฒ์ค Canvas ๋ํ ํ๋ ์ถ์ ํ ์์ ์กฐ์ ํ๊ธฐ
2024.04.24 -
[React] Canvas API ๊ธฐ๋ณธ ๋ด์ฉ ์ ๋ฆฌ / ๋ฆฌ์กํธ์์ ์ฌ์ฉ๋ฒ
[React] Canvas API ๊ธฐ๋ณธ ๋ด์ฉ ์ ๋ฆฌ / ๋ฆฌ์กํธ์์ ์ฌ์ฉ๋ฒ
2024.04.24