자바스크립트에서는 객체(object)를 사용하여 데이터를 구조화하고, 속성과 값을 포함하며, 다양한 기능을 수행하는 데 사용됩니다. 객체를 다룰 때 가장 흔히 사용되는 작업 중 하나는 객체 순회(Object Iteration)입니다. 객체를 순회하면서 객체의 속성과 값을 접근하고 처리하는 것이 가능합니다.
객체 순회 방법
자바스크립트에서 객체를 순회하는 방법은 여러 가지가 있습니다. 이번 포스트에서는 가장 일반적으로 사용되는 두 가지 방법을 알아보겠습니다: for...in
루프와 Object.keys()
메서드를 활용한 순회 방법입니다.
1. for...in
루프를 활용한 객체 순회
for...in
루프는 객체의 속성을 대상으로 반복적으로 작업을 수행하는 데 사용됩니다. 객체의 속성을 열거하기 위해 해당 루프를 사용하는 방법은 다음과 같습니다:
const obj = {
name: 'John',
age: 30,
city: 'New York'
};
for (let key in obj) {
console.log(key + ':', obj[key]);
}
위의 예제에서는 obj
객체를 순회하면서 for...in
루프를 사용하여 객체의 속성을 열거합니다. 각각의 속성에 대해 console.log()
를 통해 키(key)와 값(value)을 출력하게 됩니다.
2. Object.keys()
메서드를 활용한 객체 순회
Object.keys()
메서드를 사용하면 객체의 속성 키(key)들을 배열로 반환하는 간단한 방법이 있습니다. 해당 배열을 기반으로 루프를 실행하여 객체를 순회할 수 있습니다:
const obj = {
name: 'John',
age: 30,
city: 'New York'
};
const keys = Object.keys(obj);
for (let key of keys) {
console.log(key + ':', obj[key]);
}
위의 예제에서는 Object.keys(obj)
를 통해 obj
의 속성 키들을 배열로 얻어옵니다. 이후 for...of
루프를 사용하여 배열을 순회하면서 각각의 속성에 대해 console.log()
를 통해 키(key)와 값(value)을 출력합니다.
객체 순회의 활용
객체 순회는 다양한 상황에서 유용하게 활용될 수 있습니다. 예를 들어, 객체의 속성들을 검사하고 특정 조건에 따라 작동하는 로직을 구현할 때 객체 순회를 사용할 수 있습니다.
아래는 객체 순회를 활용하여 특정 조건을 만족하는 속성들을 필터링하여 배열로 반환하는 예제입니다:
const students = {
1: { name: 'John', age: 21 },
2: { name: 'Jane', age: 23 },
3: { name: 'David', age: 20 },
4: { name: 'Grace', age: 22 }
};
function filterStudentsByAge(students, age) {
const filteredStudents = [];
for (let key in students) {
if (students[key].age === age) {
filteredStudents.push(students[key]);
}
}
return filteredStudents;
}
console.log(filterStudentsByAge(students, 22));
위의 예제에서는 filterStudentsByAge()
함수를 통해 students
객체를 순회하면서 특정 나이(age)와 일치하는 학생 객체들을 필터링하여 배열로 반환합니다. 이러한 형태로 객체 순회를 활용하면 다양한 필터링, 검색 또는 정렬 로직을 구현할 수 있습니다.
마무리
자바스크립트에서 객체 순회는 객체의 속성들을 접근하고 처리하는 데에 큰 도움을 줍니다. for...in
루프와 Object.keys()
메서드를 통해 객체를 순회하는 방법을 살펴보았으며, 다양한 상황에서 객체 순회를 활용하는 방법을 알아보았습니다.
객체 순회를 활용하여 보다 효율적이고 간결한 코드를 작성할 수 있고, 다양한 로직에서 객체의 속성들을 다뤄야 할 때 유용하게 활용할 수 있습니다. 자바스크립트에서 객체를 다룰 때 객체 순회를 적절하게 활용하는 것은 개발 작업의 효율성과 가독성을 더욱 높여줄 수 있습니다.