๐จ Frontend/JavaScript
๐ฆVanilla JS โข ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ
kongmi
2023. 3. 22. 18:15
์กฐ๊ฑด๋ฌธ
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ์กฐ๊ฑด๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์คํํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์กฐ๊ฑด๋ฌธ์
if
,else if
,else
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ฉ๋๋ค.
if๋ฌธ
if (์กฐ๊ฑด์) {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช
๋ น๋ฌธ;
}
if ~ else๋ฌธ
if (์กฐ๊ฑด์) {
์กฐ๊ฑด์์ด ์ฐธ์ผ ๋ ์คํ๋ ๋ฌธ์ฅ
} else if (์กฐ๊ฑด์) {
์ฒซ๋ฒ์งธ ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด๊ณ ํ์ฌ์ ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์ฐ ์คํ ๋ ๋ฌธ์ฅ
} else {
์กฐ๊ฑด์์ด ๊ฑฐ์ง์ผ ๋ ์คํ ๋ ๋ฌธ์ฅ
}
let num = prompt("์ซ์๋ฅผ ์
๋ ฅ ํ์ธ์ : ", "");
if(num >= 0) {
document.write("<h2>" + num + "์ ์์ ์
๋๋ค." + "</h2>");
} else {
document.write("<h2>" + num + "์ ์์ ์
๋๋ค." + "</h2>");
}
๐ฆ์ฐ์ต๋ฌธ์
- ์ฃผ๋ฏผ ๋ฑ๋ก ๋ฒํธ๋ฅผ ์ ๋ ฅ ๋ฐ์ ์ฑ๋ณ, ๋์ด, ์ถ๋ ฅ ํ๊ธฐ
let age, birthYear, gender, jumin;
while(true) {
jumin = prompt("์ฃผ๋ฏผ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์. : " + "");
if(jumin.length != 14 || jumin.indexOf("-") == -1) {
alert("๋ค์ ์
๋ ฅํ์ธ์.");
} else break;
}
// ์ฑ๋ณ
if(jumin.charAt(7) == "1" || jumin.charAt(7) == "3") {
gender = "๋จ์ฑ";
} else gender = "์ฌ์ฑ";
// ๋์ด
if(jumin.charAt(7) == "1" || jumin.charAt(7) == "2") {
birthYear = "19" + jumin.substring(0,2);
} else birthYear = "20" + jumin.substring(0,2);
let today = new Date();
let month = today.getMonth() + 1;
let date = today.getDate();
let birth = String(month) + String(date);
if(birth.length == 3) birth = "0" + birth;
if(Number(birth) < Number(jumin.substring(2,6))) age = (today.getFullYear() - birthYear) - 1;
else age = today.getFullYear() - birthYear;
document.write(`<h3> ํ์ฌ ๋น์ ์ ๋์ด๋ ${age}์ด ์ด๊ณ , ์ฑ๋ณ์ ${gender} ์
๋๋ค. </h3>`);
switch ๋ฌธ
* ์๋ฐ์ ํ์ ๋์ผ
switch(์์ ๊ฐ) {
case ์์ ๊ฐ1 :
// ์คํํ ์ฝ๋
break;
case ์์ ๊ฐ2 :
// ์คํํ ์ฝ๋
break;
case ์์ ๊ฐ3 :
// ์คํํ ์ฝ๋
break;
default : // case์ ์ ์์ ๊ฐ์ด ๋ชจ๋ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ
// ์คํํ ์ฝ๋
break;
}
let d = new Date();
let day = d.getDay(); // ์์ผ์ ๋ฐฐ์ด๋ก ๋ด์์ index๋ฅผ return ํ๋๋ด.
let dayName = "";
switch(day) {
case 0 :
dayName = "์ผ์์ผ";
break;
case 1 :
dayName = "์์์ผ";
break;
case 2 :
dayName = "ํ์์ผ";
break;
case 3 :
dayName = "์์์ผ";
break;
case 4 :
dayName = "๋ชฉ์์ผ";
break;
case 5 :
dayName = "๊ธ์์ผ";
break;
case 6 :
dayName = "ํ ์์ผ";
break;
default :
dayName = "";
}
console.log(dayName);
์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ๋๋ฆฌ๊ธฐ (O(n) -> O(1))
let d = new Date();
let day = d.getDay();
let dayName = "";
const dayNames = [
"์ผ์์ผ",
"์์์ผ",
"ํ์์ผ",
"์์์ผ",
"๋ชฉ์์ผ",
"๊ธ์์ผ",
"ํ ์์ผ"
]
console.log(dayNames[day]);
๋ฐ๋ณต๋ฌธ
while
,do ~ while
,for
,for ~ in
,for ~ of
๊ธฐ๋ณธ for ๋ฌธ
let brands = ["์ ํ", "๊ตฌ๊ธ", "ํ์ด์ค๋ถ", "์๋ง์กด", "์ผ์ฑ์ ์"];
for(let i = 0; i < brands.length; i++) {
console.log(brands[i]);
}
for ~ of ๋ฌธ
- ์๋ฐ์ ํฅ์๋ for๋ฌธ๊ณผ ์ ์ฌํ๋ฉฐ ES6์์ ์ถ๊ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ๋ณต๋ฌธ ์ค ํ๋ ์ ๋๋ค.
- ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ด๋ ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด์ ์์๋ฅผ ์ํํ ์ ์์ต๋๋ค.
let brands = ["์ ํ", "๊ตฌ๊ธ", "๋ง์ดํฌ๋ก์ํํธ", "ํ์ด์ค๋ถ", "์๋ง์กด", "์ผ์ฑ์ ์"];
for(let brand of brands) {
console.log(brand);
}
for ~ in ๋ฌธ
- ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ด๊ฑฐํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
let person = {
fname : "John",
lname : "Doe",
age : 25
};
for(let key in person) {
console.log(person[key]);
}
John
Doe
25
while ๋ฌธ
- ์กฐ๊ฑด์ด ์ฐธ(true)์ธ ๋์, ์ค๊ดํธ ์์ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
let treeHit = 0;
while(treeHit < 10) {
treeHit++;
document.write("<p>๋๋ฌด๋ฅผ " + treeHit + "๋ฒ ์ฐ์์ต๋๋ค.</p>");
if(treeHit == 10) {
document.write("๋๋ฌด๊ฐ ๋์ด ๊ฐ๋๋ค.");
}
}
do ~ while ๋ฌธ
- while ์กฐ๊ฑด์ด ์ฐธ์ธ ๋์, ์ค๊ดํธ ์์ ์ฝ๋๊ฐ ์คํ๋๊ณ , ๋ง์ง๋ง์ ์กฐ๊ฑด์ด ๊ฒ์ฌ๋ฉ๋๋ค.
let i = 1;
do {
console.log(i);
i++;
} while (i <= 5);
๐ฆ์์ 1 - ์ํ๊ธฐ
๐ง ๊ณ ๊ฐ์ด ๊ตฌ์ ๊ฐ๋ฅํ ์๋ฃ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ
- productList ๋ฐฐ์ด์ ์ํ ์ ๋ณด๊ฐ ๊ฐ์ฒด๋ก ์ ์ฅ๋ฉ๋๋ค.
- inputCoin ๋ณ์์ 800์ด ์ ์ฅ๋ฉ๋๋ค.
- productList ๋ฐฐ์ด์ ๊ธธ์ด(len)๊ฐ ๊ณ์ฐ๋ฉ๋๋ค.
- for๋ฌธ์ ์ด์ฉํ์ฌ, productList ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
- ๋ง์ฝ ํ์ฌ ์ํ์ ๊ฐ๊ฒฉ์ด ์ ๋ ฅ๋ ๋ ์ดํ๋ผ๋ฉด, outputList ๋ฐฐ์ด์ ์ถ๊ฐ๋ฉ๋๋ค.
- ๋ชจ๋ ์ํ์ ๋ํ ๋ฐ๋ณต์ด ๋๋ ํ, outputList ๋ฐฐ์ด์ ์ ์ฅ๋ ์ํ๋ค์ด ์ถ๋ ฅ๋ฉ๋๋ค.
let productList = [
{
name : "๋ ์ฐ๋น",
price : 700
},
{
name : "๋ฐ์นด์ค",
price : 1000
},
{
name : "ํฌ์นด๋ฆฌ์ค์จํธ",
price : 1700
},
{
name : "ํฐ์คํผ",
price : 850
},
{
name : "์ผ๋ค์",
price : 500
},
{
name : "๋นํ500",
price : 1200
}
];
let inputCoin = 1000;
let len = productList.length; // ๋ฐฐ์ด์ ๊ธธ์ด
let outputList = [];
for(let i = 0; i < len; i++) {
if(productList[i].price <= inputCoin) {
outputList.push(productList[i]); // ๋ฐฐ์ด์ ๋์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐ
}
}
console.log(outputList);
[
{ name: '๋ ์ฐ๋น', price: 700 },
{ name: '๋ฐ์นด์ค', price: 1000 },
{ name: 'ํฐ์คํผ', price: 850 },
{ name: '์ผ๋ค์', price: 500 }
]
๐ฆ์์ 2 - ์๊ทผ๋ ๋
๐ ์๊ทผ๋ ๋ : 3๊ฐ์ ํ๋ฒ๊ฑฐ์ 2๊ฐ์ ์๋ฃ์ ๊ฐ๊ฒฉ์ ์ ๋ ฅ ๋ฐ์ ์ ์ผ ์ผ ์ธํธ ๋ฉ๋ด์ ๊ฐ๊ฒฉ ๊ตฌํ๊ธฐ (50์ ํ ์ธ)
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
box-sizing: border-box;
}
.menu {
width: 400px;
height: 300px;
box-shadow: 1px 1px 5px #000;
border-radius: 10px;
background-image: url(./images/ham2.png);
background-size: cover;
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
}
.menu p {
font-size: 4em;
font-weight: bold;
color: yellow;
}
</style>
</head>
<body>
<h2>์ธํธ ๋ฉ๋ด ๊ฐ๊ฒฉ</h2>
<div class="menu">
<p id="value"></p>
</div>
<script src="./230324_2_2_์๊ทผ๋ ๋.js"></script>
</body>
</html>
JavaScript
let menu = [];
let tmp;
tmp = prompt("์๋๋ฒ๊ฑฐ ๊ฐ๊ฒฉ ์
๋ ฅ : ", "");
menu[0] = Number(tmp);
tmp = prompt("์ค๋๋ฒ๊ฑฐ ๊ฐ๊ฒฉ ์
๋ ฅ : ", "");
menu[1] = Number(tmp);
tmp = prompt("ํ๋๋ฒ๊ฑฐ ๊ฐ๊ฒฉ ์
๋ ฅ : ", "");
menu[2] = Number(tmp);
tmp = prompt("์ฝ๋ผ ๊ฐ๊ฒฉ ์
๋ ฅ : ", "");
menu[3] = Number(tmp);
tmp = prompt("์ฌ์ด๋ค ๊ฐ๊ฒฉ ์
๋ ฅ : ");
menu[4] = Number(tmp);
let minB = menu[0];
let minD = menu[3];
for (let i = 0; i < menu.length; i++) {
if (i < 3 && minB > menu[i]) minB = menu[i];
if (i > 2 && minD > menu[i]) minD = menu[i];
};
document.getElementById("value").innerHTML = (minD + minB - 50) + "์";
๐ฆ์์ 3 - ๊ตฌ๊ตฌ๋จ ์ถ๋ ฅ
- ์๋ฐ์คํฌ๋ฆฝํธ, HTML, CSS๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๊ตฌ๋จ ์ถ๋ ฅํ๊ธฐ
HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>๊ตฌ๊ตฌ๋จ ์ถ๋ ฅ ํ๊ธฐ</title>
</head>
<body>
<h1>๊ตฌ๊ตฌ๋จ</h1>
<script src="./sample.js"></script>
</body>
</html>
CSS
table {
margin: 20px;
float: left;
}
table, th {
border: 1px solid #ccc;
border-collapse: collapse;
}
th, td { padding: 10px 15px;}
th {background: #eee;}
td {border: 1px dotted #222;}
JavaScript
let i, j;
for (i = 1; i <= 9; i++) {
document.write("<table>");
document.write("<tr><th>" + i + "๋จ</th></tr>");
for (j = 1; j <= 9; j++) {
document.write("<tr><td>" + i +" X " + j + " = " + i*j + "</td></tr>");
}
document.write("</table>");
}