[JavaScript] for...in 반복문

Moon·2024년 11월 14일
0

JavaScript | 기초

목록 보기
34/48
post-thumbnail

for...in 반복문은 객체의 프로퍼티들을 순회하면서 프로퍼티 이름(키)을 가져오는 반복문이다. 이 반복문은 배열이 아닌 객체의 프로퍼티에 접근할 때 유용하다. 기본 for 문으로는 수행하기 어려운 객체 순회 작업에 활용된다.

for...in 문 기본 구조

for (let key in object) {
  // 반복할 동작
}

for...in 반복문에서는 (let key in object)에서 key라는 변수가 객체의 프로퍼티 이름들을 순서대로 담아가면서 객체의 프로퍼티 개수만큼 반복이 수행된다.

for...in 반복문은 객체의 모든 프로퍼티에 접근하여 특정 작업을 반복 수행할 수 있게 한다. 특히 객체의 프로퍼티 키를 순회하는 용도로 주로 사용된다.

let bookInfo = {
  title: "JavaScript Essentials",
  author: "Alex",
  year: 2023
};

for (let key in bookInfo) {
  console.log(`${key}: ${bookInfo[key]}`);
}
// 출력:
// title: JavaScript Essentials
// author: Alex
// year: 2023

위 코드에서 for...in은 객체 bookInfo의 각 프로퍼티 이름을 순서대로 가져와서 key 변수에 할당한다. 대괄호 표기법을 사용하면 bookInfo[key] 를 통해 각 프로퍼티의 값을 동적으로 접근할 수 있다.

객체 프로퍼티 순서: 숫자형 프로퍼티와 일반 프로퍼티

for...in 반복문이 실행될 때 객체의 프로퍼티는 일반적으로 추가된 순서대로 순회되지만, 숫자형 프로퍼티가 포함된 경우에는 순서에 영향을 미칠 수 있다.

숫자형 프로퍼티

객체의 프로퍼티 이름은 문자열이지만, 숫자형 값을 포함할 수도 있다. for...in 반복문을 사용할 때 숫자형 프로퍼티는 오름차순으로 정렬된 후 반복된다.

let courseInfo = {
  3: "Advanced JS",
  1: "JavaScript Basics",
  2: "Intermediate JS",
  category: "Programming",
};

for (let key in courseInfo) {
  console.log(key);
}
// 출력:
// 1
// 2
// 3
// category

이 코드에서 프로퍼티가 추가된 순서는 {3, 1, 2, "category"}이지만, for...in 문에서는 정수형 프로퍼티(1, 2, 3)가 오름차순으로 정렬되어 출력된다. 일반적인 프로퍼티(category)는 작성 순서대로 정렬되지 않고 그 뒤에 따라온다.

문자열로 변환되는 숫자형 프로퍼티

자바스크립트에서 숫자형 프로퍼티는 실제로 문자열로 변환되어 저장된다. 따라서, 숫자형으로 작성한 키 값도 내부적으로는 문자열로 취급된다.

let example = {
  100: "hundred",
  "200": "two hundred",
};

for (let key in example) {
  console.log(`${key}의 자료형은 ${typeof key}`);
}
// 출력:
// 100의 자료형은 string
// 200의 자료형은 string

예외적으로 [] 표기법이 필요한 경우

숫자형 프로퍼티나 특수 문자가 포함된 프로퍼티는 [] 표기법을 사용해 접근해야 한다.

let numbers = {
  10: "ten",
  "first-name": "John",
};

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

객체 프로퍼티 이름에 공백이나 특수 문자가 포함된 경우도 [] 표기법을 사용해 접근할 수 있다.


요약

  • for...in 반복문은 객체의 프로퍼티 키를 순회하는 데 유용하다.
  • 숫자형 프로퍼티가 있는 경우, 정수형 프로퍼티는 오름차순으로 먼저 정렬되고, 그 외의 프로퍼티는 추가된 순서대로 순회된다.
  • 대괄호 표기법은 숫자형이나 특수 문자가 포함된 프로퍼티에 접근할 때 필요하다.

객체 프로퍼티 순서의 특성과 for...in 반복문을 잘 활용하면 객체의 데이터를 원하는 방식으로 효율적으로 다룰 수 있다.

객체에서 숫자형 프로퍼티가 포함된 경우 for...in 반복문은 정수형 프로퍼티를 오름차순으로 먼저 정렬한 후 나머지 프로퍼티를 추가한 순서대로 출력한다. 이는 객체 순회 시 예상치 못한 순서로 출력되는 것을 방지하기 위해 알아두어야 하는 중요한 사항이다.

profile
MOON.DEVLOG

0개의 댓글