📦

Pick Object Keys

Pick Object Keys - Explanation

쉬움 객체 O(k) O(k)

Problem Summary

Write a function that creates an object with only the specified keys.

Go to Problem →

Detailed Explanation

이 문제는 **객체에서 원하는 속성만 추출**하는 pick 유틸리티 함수를 구현합니다. Lodash의 _.pick과 같은 기능입니다. **알고리즘 전략** 1. 빈 객체로 시작 2. 원하는 키 목록을 순회 3. 각 키가 원본 객체에 존재하면 복사 **reduce로 객체 생성** ```javascript keys.reduce((result, key) => { if (key in obj) result[key] = obj[key]; return result; }, {}); ``` **{a:1, b:2, c:3}에서 ["a", "c"] 선택** - key="a": "a" in obj → result={a:1} - key="c": "c" in obj → result={a:1, c:3} **key in obj vs obj.hasOwnProperty(key)** - `in`: 상속된 속성도 체크 - `hasOwnProperty`: 자신의 속성만 체크 대부분의 경우 `in`으로 충분합니다. **존재하지 않는 키 처리** keys에 객체에 없는 키가 포함되어도 안전합니다. `if (key in obj)` 조건이 걸러냅니다. **실용적 활용** API 응답에서 필요한 필드만 추출할 때 유용합니다: ```javascript const user = pick(apiResponse, ['id', 'name', 'email']); ```

Solution Code

solution.js
function pick(obj, keys) {
  return keys.reduce((result, key) => {
    if (key in obj) result[key] = obj[key];
    return result;
  }, {});
}

Key Concepts from This Problem

1. pick 유틸리티
2. reduce로 객체 생성
3. in 연산자
4. 속성 필터링

Common Mistakes

reduce의 초기값 {}를 빠뜨리면 안 됩니다
result를 return하지 않으면 다음 반복에서 undefined가 됩니다
존재하지 않는 키에 대한 처리를 잊으면 안 됩니다

Hints

Hint 1: reduce를 사용하세요.
Hint 2: key in obj로 키 존재 여부를 확인하세요.

Complexity Analysis

Time Complexity

O(k)

Space Complexity

O(k)

Related Tags

#객체 #reduce #필터링