자바스크립트 객체 필터링하기

자바스크립트에서 객체를 다루는 작업은 매우 흔합니다. 때로는 필요한 속성만으로 구성된 새로운 객체를 생성하거나, 특정 조건을 충족하는 객체만 추출해야 할 때가 있습니다. 이러한 경우 객체 필터링을 사용할 수 있습니다. 자바스크립트에서 객체를 필터링하는 방법을 알아보겠습니다.

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.entriesObject.fromEntries 메서드를 사용하여 수행할 수 있습니다. 객체 필터링을 통해 필요한 조건을 충족하는 속성을 가진 새로운 객체를 생성할 수 있습니다. 이를 활용하여 자바스크립트에서 객체를 효과적으로 다룰 수 있습니다.