자바스크립트에서 객체를 다루는 작업은 매우 흔합니다. 때로는 필요한 속성만으로 구성된 새로운 객체를 생성하거나, 특정 조건을 충족하는 객체만 추출해야 할 때가 있습니다. 이러한 경우 객체 필터링을 사용할 수 있습니다. 자바스크립트에서 객체를 필터링하는 방법을 알아보겠습니다.
filter
메서드를 활용한 객체 필터링
filter
메서드는 배열을 기반으로 동작하는 메서드이지만, 객체의 속성을 필터링할 때에도 사용할 수 있습니다. 객체를 filter
메서드로 필터링하면 조건을 만족하는 속성을 가진 새로운 객체가 반환됩니다.
아래는 filter
메서드를 사용한 객체 필터링의 예입니다.
const users = [
{ name: 'John', age: 32 },
{ name: 'Jane', age: 28 },
{ name: 'Jake', age: 42 },
{ name: 'Jill', age: 26 },
];
const filteredUsers = users.filter(user => user.age > 30);
console.log(filteredUsers);
// 출력: [ { name: 'John', age: 32 }, { name: 'Jake', age: 42 } ]
위 예제에서는 users
배열을 생성하고, age
속성이 30보다 큰 사용자들만 필터링하여 filteredUsers
배열에 저장했습니다. 따라서 filteredUsers
배열에는 age
속성이 30보다 큰 사용자들만 담겨있게 됩니다.
Object.fromEntries
메서드를 활용한 객체 필터링
ECMAScript 2019부터 도입된 Object.fromEntries
메서드는 키와 값을 가진 배열을 이용하여 객체를 생성합니다. 이 메서드를 활용하면, 필터링된 객체를 더 쉽게 생성할 수 있습니다.
아래는 Object.fromEntries
메서드를 사용한 객체 필터링의 예입니다.
const users = {
john: { age: 32 },
jane: { age: 28 },
jake: { age: 42 },
jill: { age: 26 },
};
const filteredUsers = Object.fromEntries(
Object.entries(users).filter(([key, value]) => value.age > 30)
);
console.log(filteredUsers);
// 출력: { john: { age: 32 }, jake: { age: 42 } }
위 예제에서는 users
객체를 생성하고, age
속성이 30보다 큰 사용자들만 필터링하여 filteredUsers
객체에 저장했습니다. Object.entries
를 통해 객체를 배열로 변환한 뒤, filter
메서드를 사용하여 조건에 해당하는 배열 필터링을 수행하였습니다. 마지막으로 Object.fromEntries
를 사용하여 배열을 객체로 다시 변환하여 필터링된 객체를 생성합니다.
결론
자바스크립트에서 객체 필터링은 배열 필터링 메서드인 filter
메서드를 활용하거나 Object.entries
와 Object.fromEntries
메서드를 사용하여 수행할 수 있습니다. 객체 필터링을 통해 필요한 조건을 충족하는 속성을 가진 새로운 객체를 생성할 수 있습니다. 이를 활용하여 자바스크립트에서 객체를 효과적으로 다룰 수 있습니다.