Seize your moment! ๐Ÿ‘พ

์•ˆ๋…•ํ•˜์„ธ์š”. Eric์ž…๋‹ˆ๋‹ค. ์ œ ๋ธ”๋กœ๊ทธ์— ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๊ฐœ๋ฐœ๊ณต๋ถ€/JavaScript

[Eric's JS] JavaScript ๋ชจ๋“  for๋ฌธ ์ดํ•ดํ•˜๊ธฐ ๐Ÿ™ƒ Enumerable๊ณผ Iterable ํ™œ์šฉ (feat. ES6)

Eric_ko 2023. 5. 11. 10:50

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„!

Eric ์ž…๋‹ˆ๋‹ค!

์˜ค๋Š˜์€ JavaScript์—์„œ ์‚ฌ์šฉ๋˜๋Š” for ๋ฌธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ,

์ด๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” enumerable๊ณผ iterable ๊ฐœ๋…์„ ํ•จ๊ป˜ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1๏ธโƒฃ  for ๋ฌธ

 

๋จผ์ € ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ for ๋ฌธ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด for ๋ฌธ์€ ์ดˆ๊ธฐ์‹, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ฒ”์œ„์˜ ๋ฐ˜๋ณต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ:

for (let i = 0; i < 5; i++) {
  console.log(i);
}

2๏ธโƒฃ for...in ๋ฌธ

 

for...in ๋ฌธ์€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ(enumerable) ์†์„ฑ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ, ๋ฐฐ์—ด์ด๋‚˜ ๋‹ค๋ฅธ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ(iterable) ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ:

const person = {
  name: "Eric",
  age: 30,
  job: "๊ฐœ๋ฐœ์ž"
};

for (const key in person) {
  console.log(`${key}: ${person[key]}`);
}

3๏ธโƒฃ for...of ๋ฌธ

 

for...of ๋ฌธ์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ(iterable) ๊ฐ์ฒด์˜ ์š”์†Œ๋“ค์„ ์ˆœํšŒํ•˜๋ฉฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด, ๋ฌธ์ž์—ด, Set, Map ๋“ฑ์˜ iterable ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ:

const fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "๋”ธ๊ธฐ"];

for (const fruit of fruits) {
  console.log(fruit);
}

4๏ธโƒฃ forEach ๋ฉ”์„œ๋“œ

Array์˜ forEach ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ฃผ์–ด์ง„ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” Array์˜ ํ”„๋กœํ† ํƒ€์ž…์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ:

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(function (number) {
  console.log(number);
});

์ด์ œ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ enumerable๊ณผ iterable ๊ฐœ๋…์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

โœ… Enumerable:

๊ฐ์ฒด์˜ ์†์„ฑ์ด ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด๋Š” ์†์„ฑ์ด for...in ๋ฌธ์—์„œ ๋ฐ˜๋ณต๋˜๊ฑฐ๋‚˜ Object.keys()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

 

โœ… Iterable:

๊ฐ์ฒด๊ฐ€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” for...of ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๋ธ”๋กœ๊ทธ ๊ธ€์„ ํ†ตํ•ด JavaScript์˜ ๋‹ค์–‘ํ•œ for ๋ฌธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ enumerable, iterable ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ ์ž‘์„ฑ์— ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.