๐ŸŽจ 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>");
}