Back to Objects & JSONMedium
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 expressionaccreturn.- Agar nahi:
accas-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.