Exercise 2: Pick Keys

Problem Statement

Create a function `pick(obj, keys)` that keeps only given keys in a new object.

Sample Output:

pick({a: 1, b: 2, c: 3}, ["a", "c"]) => {a: 1, c: 3}
pick({x: 10, y: 20}, ["z"]) => {}

Solution

const pick = (obj, keys) =>
  keys.reduce((acc, k) => (k in obj ? ((acc[k] = obj[k]), acc) : acc), {});

Explanation

Overall Goal:

  • Object se sirf specific keys pick karna.
  • New object banana (original mutate nahi karna).

Solution:

  • const pick = (obj, keys) => keys.reduce((acc, k) => (k in obj ? ((acc[k] = obj[k]), acc) : acc), {});

Part 1: Function header

  • const pick = (obj, keys) => → function jo object aur keys array lega.

Part 2: Reduce logic

  • keys.reduce((acc, k) => ..., {})
  • reduce → keys array ko traverse karke single object banana.
  • {} → initial value (empty object).

Part 3: Key check and copy

  • (k in obj ? ((acc[k] = obj[k]), acc) : acc)
  • k in obj → kya key object me exist karti hai?
  • Agar hai:
  • acc[k] = obj[k] → key-value copy karo.
  • , acc → comma operator: last expression acc return.
  • Agar nahi: acc as-is return (key skip).

Example:

  • pick({a: 1, b: 2, c: 3}, ["a", "c"]){a: 1, c: 3}.

Real world:

  • API payload sanitize: sirf required fields send karna.
  • Form data: selected fields extract karna.
  • Data transformation: object subset banana.