๋ฐ˜๋ณต๋ฌธ(Iteration)

๐Ÿ“„ ๋ฐ˜๋ณต๋ฌธ for

for๋ฌธ์€ ์–ด๋–ค ์œ ํ•œํ•œ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

for(์ดˆ๊ธฐํ™”; ๋ฐ˜๋ณต ์กฐ๊ฑด; ๋ฐ˜๋ณต์ด ๋œ ํ›„ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ) {
    ๋ฐ˜๋ณต์ด ๋˜๋Š” ์ฝ”๋“œ ๋ธ”๋Ÿญ
 }

์ดˆ๊ธฐํ™” ํ•˜๋ฉด์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์ค‘๊ด„ํ˜ธ ์•ˆ ๋ฐ˜๋ณต ๋ธ”๋Ÿญ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒํ•˜๊ธฐ | break

for (let i = 0; i < 5; i++) {
  console.log(i);
  if (i > 2) {
    break;
  }
  console.log("์•ˆ๋…•ํ•˜์„ธ์š”", i);
}

i๊ฐ€ 0๋ถ€ํ„ฐ 4๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ถœ๋ ฅํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ i๊ฐ€ 2๋ณดํƒ€ ํฐ ๊ฒฝ์šฐ๋Š” ๋ฐ˜๋ณต์„ ์ข…๋ฃŒํ•œ๋‹ค.

๊ฒฐ๊ณผ ๋ฐ˜๋ณต๋ฌธ

๋ฐ˜๋ณต๋ฌธ ๋„˜๊ธฐ๊ธฐ | continue

๋ฐ˜๋ณต๋˜๋Š” ๋ธ”๋Ÿญ ์•ˆ์—์„œ continue๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ฑฐ๊ธฐ์„œ ๋ฐ”๋กœ ํ•ด๋‹น ๋ธ”๋Ÿญ์€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด์™€ ๊ฐ™์ด ๋‹ค์Œ ๋ฐ˜๋ณต์ด ์žˆ์œผ๋ฉด ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

for (let i = 0; i < 5; i++) {
  console.log(i);
  if (i < 2) {
    continue;
  }
  console.log("์•ˆ๋…•ํ•˜์„ธ์š”", i);
}

๊ฒฐ๊ณผ ๋ฐ˜๋ณต๋ฌธ2

for ๋ฌดํ•œ ๋ฃจํ”„

์†Œ๊ด„ํ˜ธ ()์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์ ์ง€ ์•Š๊ณ  ์„ธ๋ฏธ์ฝœ๋ก  ;๋งŒ ์ž‘์„ฑํ•˜๋ฉด ์กฐ๊ฑด์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•„ ๋ฌดํ•œ์œผ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ณดํ†ต for๋ฌธ ์•ˆ์—์„œ if๋ฌธ์œผ๋กœ ์กฐ๊ฑด์„ ์ƒ์„ฑํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

for (;;) {
  console.log("์•ˆ๋…•ํ•˜์„ธ์š”");
  if (Math.random * 100 > 90) {
    break;
  }
}

๋žœ๋ค์ˆซ์ž*100 ์ด 90๋ณด๋‹ค ํฌ๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

๐Ÿ“„ for in

for in๋ฐ˜๋ณต๋ฌธ์€ ๊ฐ์ฒด์˜ ์†์„ฑ๋“ค์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์˜ key๊ฐ’์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ value์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

for(let(๋˜๋Š” const) in ๊ฐ์ฒด์ด๋ฆ„) {}

console.log(Object.keys(๊ฐ์ฒด์ด๋ฆ„)); // ๊ฐ์ฒด์˜ ํ‚ค ๋ฐ›์•„์˜ค๊ธฐ
console.log(Object.values(๊ฐ์ฒด์ด๋ฆ„)); //ํ‚ค์˜ ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ
console.log(Object.entries(๊ฐ์ฒด์ด๋ฆ„)); //๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ํ‚ค์™€ ๊ฐ’์„ ๋ฐ˜ํ™˜

๐Ÿ“„ for of

ES6์— ์ถ”๊ฐ€๋œ for...of๋ฐ˜๋ณต๋ฌธ์€ ๋ฐฐ์—ด์•ˆ์˜ ๊ฒƒ๋“ค์„ ๋ฐ˜๋ณตํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

for of ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๊ฐ€ [Symbol.iterator] ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

var iterable = [10, 20, 30];

for (let value of iterable) {
  console.log(value); // 10, 20, 30
}

์ฃผ์˜ํ•  ์ 

for..in์€ ๋ฐฐ์—ด์— ์‚ฌ์šฉํ•  ์ˆœ ์žˆ์ง€๋งŒ ๋˜๋„๋ก ์“ฐ์ง€ ์•Š๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
for..in๋ฐ˜๋ณต๋ฌธ์€ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ˆœํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํ”„๋กœํผํ‹ฐ๋„ ์ˆœํšŒ ๋Œ€์ƒ์ด ๋˜์–ด ํ•„์š” ์—†๋Š” ํ”„๋กœํผํ‹ฐ๋“ค์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์ƒ๊น๋‹ˆ๋‹ค.
๋˜ํ•œ for..in๋ฐ˜๋ณต๋ฌธ์€ ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ตœ์ ํ™”๋˜์–ด ์žˆ์–ด ๋ฐฐ์—ด์— ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋Œ€๋น„ 10~100๋ฐฐ ์ •๋„ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ“Œ ๊ฐ์ฒด์—๋Š” for...in, ๋ฐฐ์—ด์—๋Š” for...of๋ฅผ ์‚ฌ์šฉํ•˜์ž

๐Ÿ“„ while

๋ฌดํ•œ ๋ฐ˜๋ณต ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•  ๋•Œ for๋ฌธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ while๋ฌธ์œผ๋กœ๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

while (true) {
  console.log("์•ˆ๋…•ํ•˜์„ธ์š”");
  if (Math.random() * 100 > 90) {
    break;
  }
}

Math.random() * 100์ด 90๋ณด๋‹ค ํฌ๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

do while

while๋ฌธ์ด ์ตœ์ดˆ๋กœ ํ•œ๋ฒˆ์€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

do {
  // ์ตœ์ดˆ ํ•œ๋ฒˆ์€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰
  console.log("์•ˆ๋…•ํ•˜์„ธ์š”");
} while (Math.random() * 100 > 90);

์ถœ์ฒ˜

Leave a comment