🦁_21.11.30 TIL

BoriΒ·2021λ…„ 11μ›” 30일
1
post-thumbnail

21λ…„ 11μ›” 30일

πŸ“ Javascript

πŸ“Ž 반볡문

for문의 λ‹€λ₯Έ ν˜•νƒœλ“€

let array = [10, 20, 30, 40, 50]
let i = 0;

// i > array.length 주의! => λ¬΄ν•œλ°˜λ³΅
for (; i < array.length; ) {
  console.log(array[i]);
  i++;
}

array.forEach((e) => console.log(e * 3));

// for in
for (let val in array) {
  console.log(array[val]);
}

// for of
for (let value of array) {
  console.log(value);
}

// 평균 κ΅¬ν•˜κΈ°
let sum = 0;
for (let value of array) {
  sum += value;
}

console.log(sum / array.length); // 30

while문

  • νŠΉμ • 쑰건을 λ§Œμ‘±ν•  λ•ŒκΉŒμ§€ κ³„μ†ν•΄μ„œ 주어진 싀행문을 반볡
  • ν‘œν˜„μ‹μ΄ 참이면 λ‚΄λΆ€μ˜ 싀행문을 μ‹€ν–‰
  • whileλ¬Έ 내에 ν‘œν˜„μ‹μ˜ κ²°κ³Όλ₯Ό λ³€κ²½ν•˜λŠ” 싀행문이 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 λ¬΄ν•œ 루프(infinite loop)
while (ν‘œν˜„μ‹) {
  ν‘œν˜„μ‹μ˜ κ²°κ³Όκ°€ 참인 λ™μ•ˆ 반볡적으둜 μ‹€ν–‰ν•˜κ³ μž ν•˜λŠ” μ‹€ν–‰λ¬Έ;
}

// λ¬΄ν•œ 루프
while (true) { ... }

// ꡬꡬ단 - λ‚΄ μ½”λ“œ
let i = 2;
while (i < 10) {
  let j = 1;  // μ§€μ—­λ³€μˆ˜
  while (j < 10) {
    console.log(`${i} X ${j} = ${i * j}`);
    j++;
  }
  i++;
}

do/while문

  • do/while문은 λ¨Όμ € 루프λ₯Ό ν•œ 번 μ‹€ν–‰ν•œ 후에 ν‘œν˜„μ‹μ„ 검사
    => while문은 루프에 λ“€μ–΄κ°€κΈ° 전에 ν‘œν˜„μ‹ 검사 λ¨Όμ €
do {
  ν‘œν˜„μ‹μ˜ κ²°κ³Όκ°€ 참인 λ™μ•ˆ 반볡적으둜 μ‹€ν–‰ν•˜κ³ μž ν•˜λŠ” μ‹€ν–‰λ¬Έ;
} while (ν‘œν˜„μ‹);

// 예제
let num = 0;
do {
  console.log(num);
  num += 1;
} while (num < 11);

break

// ꡬꡬ단 4λ‹¨κΉŒμ§€λ§Œ 좜λ ₯
let i = 2;
let j = 1;
while (i < 10) {
  if (i == 5){
    break;
  }
  while (j < 10) {
    console.log(`${i} X ${j} = ${i*j}`);
    j++;
  }
  i++;
  j = 1;
}

// ꡬꡬ단 2 X 4, 3 X 4, ... 9 X 4κΉŒμ§€ 좜λ ₯
let i = 2;
let j = 1;
while (i < 10) {
  while (j < 10) {
    if (j == 5){
      break;
    }
    console.log(`${i} X ${j} = ${i*j}`);
    j++;
  }
  i++;
  j = 1;
}

πŸ“Ž μ€‘μ²©λœ λ°˜λ³΅λ¬Έμ„ λ²—μ–΄λ‚˜λŠ” 방법

What's the best way to break from nested loops in JavaScript?

Set parent(s) loop to the end

for (let i = 0; i < 5; i++) {
  for (let j = 0; j < 5; j++) {
    if (j === 2) {
      i = 5;
      break;
    }
  }
}

Use label

// exit_loopsλΌλŠ” μ‹λ³„μžκ°€ 뢙은 λ ˆμ΄λΈ” for λ¬Έ
// ν˜„μ—…μ—μ„œλŠ” 객체와 ν–‡κ°ˆλ €μ„œ 잘 μ•ˆμ“°λŠ” 편
// ν• κΊΌλ©΄ function으둜
exit_loops: for (let i = 0; i < 5; i++) {
  for (let j = 0; j < 5; j++) {
    if (j === 2) {
      // j === 2이면 for 문을 νƒˆμΆœ
      break exit_loops;
    }
  }
}

참고링크

Use variable

let exit_loops = false;
for (let i = 0; i < 5; i++) {
  for (let j = 0; j < 5; j++) {
    if (j === 2) {
      exit_loops = true;
      break;
    }
  }
  if (exit_loops) break;
}

Use self executing function

(function () {
  for (let i = 0; i < 5; i++) {
    for (let j = 0; j < 5; j++) {
      if (j === 2) return;
    }
  }
})();

Use regular function

function nested_loops() {
  for (let i = 0; i < 5; i++) {
    for (let j = 0; j < 5; j++) {
      if (j === 2) return;
    }
  }
}
nested_loops();

πŸ“Ž μžλ£Œν˜• - λ¬Έμžμ—΄(String)

  • Javascriptμ—λŠ” ν…μŠ€νŠΈ ν˜•μ‹μ˜ λ°μ΄ν„°λŠ” 길이에 상관없이 λ¬Έμžμ—΄ ν˜•νƒœλ‘œ μ €μž₯
  • String은 λ”°μ˜΄ν‘œλ‘œ λ¬ΆμŠ΅λ‹ˆλ‹€.
// μž‘μ€λ”°μ˜΄ν‘œμ™€ 큰 λ”°μ˜΄ν‘œλŠ” κΈ°λŠ₯상 차이가 μ—†λ‹€.
let single = 'μž‘μ€λ”°μ˜΄ν‘œ';
let double = "ν°λ”°μ˜΄ν‘œ";

// 백틱은 ν‘œν˜„μ‹μ„ ${...}λ₯Ό μ΄μš©ν•΄ λ¬Έμžμ—΄ 쀑간에 μ‰½κ²Œ μ‚½μž…ν•  수 μžˆλ‹€
// = template literal
let backticks = `λ°±ν‹±`;

λ¬Έμžμ—΄μ˜ 길이

  • λ¬Έμžμ—΄.length ν”„λ‘œνΌν‹° : λ¬Έμžμ—΄μ˜ 길이가 μ €μž₯
let s = `abcdefABCDEF`;

console.log(s.length); // 12

λΆ€λΆ„ λ¬Έμžμ—΄ μ°ΎκΈ°

=> μž‘μ„±μ€‘μž…λ‹ˆλ‹€:)

πŸ“Ž Javascript Cheet Sheet λ§Œλ“€κΈ°

μ†ŒμŠ€μ½”λ“œ 보기

πŸ“Ž μ—°μŠ΅λ¬Έμ œ ν’€κΈ°

1. λ‹€μŒ κ°’μ˜ 평균과 뢄산을 κ΅¬ν•˜μ‹œμ˜€.

let nums = [10, 20, 30, 10, 20, 30, 40, 10];
let total = 0;

// 평균
for (let num of nums) {
  total += num;
}

let avr = total / nums.length;
console.log(avr);

// λΆ„μ‚°
let total2 = 0;

for (let num of nums) {
  // avr λ„£μ–΄μ•Ό ν•˜λŠ”λ° total둜 잘λͺ»λ„£μ–΄μ„œ 계속 μ—‰λ§μ§„μ°½μ΄μ—ˆμŒ
  num = (num - avr) ** 2;
  total2 += num;
}

console.log(total2 / nums.length);

2. λ‹€μŒ string의 평균 값을 κ΅¬ν•˜μ„Έμš”.

let str = "5, 4, 10, 2, 5";
let sum = 0;

str = str.split(",");

for (let num of str) {
  // μžλ™μ™„μ„±μ„ μ‚¬μš©ν•΄μ„œ parseIntκ°€ parent둜 잘λͺ» λ“€μ–΄κ°€μ„œ 이것도 μ—‰λ§μ§„μ°½μ΄μ—ˆμŒ
  // Number의 λͺ©μ μ€ ν˜• λ³€ν™˜μ΄ μ•„λ‹ˆλ―€λ‘œ parseInt μ‚¬μš©ν•˜κΈ°
  sum += parseInt(num);
}

console.log(sum / str.length);

마무리

  • μˆ˜μ—… μ‹œκ°„μ΄ ν›„λ”± μ§€λ‚˜κ°”λ‹€. λ‚˜λ¦„ νƒ€μžλ₯Ό λ°”μ˜κ²Œ μ³€λŠ”λ° μž˜ν–ˆλ‚˜λ³΄λ‹€?!🀸
  • μ½”λ”©ν…ŒμŠ€νŠΈ 문제 ν’€κΈ° κ½€ 잼
    => 아직 μ‰¬μ›Œμ„œ κ·ΈλŸ°κ°€λ΄„ 히히히
  • μžλ°”μŠ€ν¬λ¦½νŠΈ μŠ€ν„°λ””μ— μ°Έμ—¬ν•˜κ²Œ λ˜μ—ˆλ‹€μ•„
    => μŠ€ν„°λ”” μ²˜μŒμ΄μ–΄μ„œ μ•½κ°„ κΈ΄μž₯λ˜μ§€λ§Œ μž˜ν•΄μ•Όμ§€!!

0개의 λŒ“κΈ€