Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const getProxy = (target = {}, key) =>
- target[key] || (target[key] = new Proxy({}, { get: getProxy }));
- const fillPick = (proxy, fn, fromObject = fn(proxy)) =>
- Object.assign(
- {},
- ...Object.entries(proxy).map(([key, value]) => ({
- [key]: Object.keys(value).length
- ? fillPick(value, fn, fromObject[key])
- : fromObject[key],
- })),
- );
- const pick = fn => fillPick(getProxy(), fn);
- const object = { a: 1, b: 2, c: 3, d: { e: 4, f: 5 } };
- const subset = pick(({ a, b, d: { e } }) => object);
- console.log(subset); // { a: 1, b: 2, d: { e: 4 } }
Add Comment
Please, Sign In to add comment