Advertisement
Guest User

Untitled

a guest
Jul 24th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. function pickDeep(data, keys) {
  2. return _.reduce(data, function(result, value, key, collection) {
  3. var val = null;
  4.  
  5. if (_.isObject(value)) {
  6. val = pickDeep(value, keys);
  7. } else {
  8. if (keys.indexOf(key) > -1) {
  9. val = value;
  10. }
  11. }
  12.  
  13. if ( (!_.isNull(val) && !_.isObject(val))
  14. || (_.isObject(val) && !_.isEmpty(val))) {
  15. if (_.isArray(result)) {
  16. result.push(val);
  17. } else {
  18. result[key] = val;
  19. }
  20. }
  21.  
  22. return result;
  23. }, (_.isArray(data) ? [] : {}));
  24. };
  25.  
  26. var data = {
  27. a: 5,
  28. b: 6,
  29. c: 7,
  30. d: {
  31. a: 65,
  32. z: 6,
  33. d: {
  34. a: 65,
  35. k: 5
  36. }
  37. },
  38. e: [
  39. {a : 5},
  40. {b : 6},
  41. {c : 7}
  42. ],
  43. f: [
  44. {
  45. b : [ { a: 5, z: 5 } ],
  46. c : 6
  47. },
  48. {
  49. g: 0
  50. }
  51. ]
  52. };
  53.  
  54. console.log(pickDeep(data, ['a', 'c']));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement