Chapter 07: ๋ฐ˜๋ณต๋ฌธ (Loop)

๐Ÿ’ก ๋„์„œ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

7.1 for (value of iterable)


for...of ๋ฌธ์€ ๋ฐฐ์—ด์— ๊ด€ํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด(Array, Map, Set, String, TypedArray, arguments ๊ฐ์ฒด ๋“ฑ์„ ํฌํ•จ)์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

์‚ฌ์‹ค ์ด ๊ตฌ๋ฌธ์€ ๋ฐฐ์›Œ๋†”๋„ ์‚ฌ์šฉ ํ•  ์ผ์ด ๋ณ„๋กœ ์—†๋‹ค. ๋ณดํ†ต ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•  ๋•Œ์—๋Š” map ๋“ฑ์˜ ๋ฐฐ์—ด ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

const array = [1, 2, 4, 5];
for (let value of array) { // use strict ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ฒฝ์šฐ let์„ ๋นผ๋„ ๋จ
    console.log(value);
}
// 1
// 2
// 4
// 5

๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ฐ˜๋ณต

// for
var fruits = ['apple','banana','orange'];
for (var i = 0; i < fruits.length; i++){
  console.log(fruits[i]);
}
// apple
// banana
// orange

// for of
const fruits = ['apple','banana','orange'];
for(const fruit of fruits){
  console.log(fruit);
}
// apple
// banana
// orange

๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ฐ˜๋ณต

๊ฐ์ฒด ๋ฐ˜๋ณต๋ฌธ์„ ์•Œ์•„๋ณด๊ธฐ ์ „์—, ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์•Œ์•„๋ณด์ž.

  • Object.entries: [[ํ‚ค, ๊ฐ’], [ํ‚ค, ๊ฐ’]] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
  • Object.keys: [ํ‚ค, ํ‚ค, ํ‚ค] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
  • Object.values: [๊ฐ’, ๊ฐ’, ๊ฐ’] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
const doggy = {
  name: '๋ฉ๋ฉ์ด',
  sound: '๋ฉ๋ฉ',
  age: 2
};

console.log(Object.entries(doggy));
console.log(Object.keys(doggy));
console.log(Object.values(doggy));

์ด์ œ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ดํŽด๋ณด์ž. ๊ฐ์ฒด๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ”์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ key, value ์Œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Object.keys() ์ด์šฉ

const car = {
  maker: "BMW",
  color: "red",
  year : "2010",
}

for (const prop of Object.keys(car)){
  const value = car[prop];
  console.log(prop,value);
}
// maker BMW
// color red
// year 2010

Object.entries() ์ด์šฉ

const car = {
  maker: "BMW",
  color: "red",
  year : "2010",
}

for (const prop of Object.entries(car)){
  const value = car[prop];
  console.log(prop,value);
}
// ['maker', 'BMW'] 
// ['color', 'red'] 
// ['year', '2010']

7.2 for (key in obj)


for...in ๋ฌธ์€ ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

const obj = {
    name: 'newstar'
}
for (let key in obj) { // use strict ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ฒฝ์šฐ let์„ ๋นผ๋„ ๋จ
    console.log(key); // name
}

for in ์€ ์ˆœ์„œ ์—†์ด ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์„ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— for of ์™€ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๋ณต ์ค‘์—๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

const car = {
  maker: "BMW",
  color: "red",
  year : "2010",
}
for (const prop in car){
  console.log(prop, car[prop]);
}
// maker BMW
// color red
// year 2010

7.3 for of์™€ for in์˜ ์ฐจ์ด


for in ์€ ๋ฐฐ์—ด์˜ ์†์„ฑ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ˜๋ฉด, for of ๋Š” ๋ฐฐ์—ด์˜ ์›์†Œ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

let list = [4, 5, 6];

// for...in ์€ key ๋ฐ˜ํ™˜
for (let i in list) {
   console.log(i); // "0", "1", "2",
}

// for ...of ๋Š” value ๋ฐ˜ํ™˜
for (let i of list) {
   console.log(i); // "4", "5", "6"
}

์ฐธ๊ณ