Guest User

Untitled

a guest
Jan 19th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. const getProxy = (target = {}, key) =>
  2. target[key] || (target[key] = new Proxy({}, { get: getProxy }));
  3.  
  4. const fillPick = (proxy, fn, fromObject = fn(proxy)) =>
  5. Object.assign(
  6. {},
  7. ...Object.entries(proxy).map(([key, value]) => ({
  8. [key]: Object.keys(value).length
  9. ? fillPick(value, fn, fromObject[key])
  10. : fromObject[key],
  11. })),
  12. );
  13.  
  14. const pick = fn => fillPick(getProxy(), fn);
  15.  
  16. const object = { a: 1, b: 2, c: 3, d: { e: 4, f: 5 } };
  17. const subset = pick(({ a, b, d: { e } }) => object);
  18. console.log(subset); // { a: 1, b: 2, d: { e: 4 } }
Add Comment
Please, Sign In to add comment