Advertisement
Guest User

Untitled

a guest
Jun 30th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. var data=[{
  2. id:'2a345',
  3. name:'test',
  4. poll:[{id:4},{id:5}]
  5. },{
  6. id:'3b329',
  7. name:'prod',
  8. poll:[{id:2},{id:7}]
  9. }];
  10.  
  11. var data_nested=[{
  12. id:'2a345',
  13. name:'test',
  14. poll:[{id:'2a54',inner:[{id:1},{id:8}]},{id:'3a54',inner:[{id:2},{id:9}]}]
  15. },{
  16. id:'3b329',
  17. name:'prod',
  18. poll:[{id:'2a32',inner:[{id:2},{id:7}]},{id:'3a32',inner:[{id:3},{id:6}]}]
  19. }
  20. ];
  21.  
  22.  
  23. //factory to curry function
  24. var findPollById=function(id,poll){
  25. return function(poll){
  26. return poll.id===id;
  27. }
  28. };
  29.  
  30. var flattenMap=function(prop){
  31. return function(prev,curr){
  32. return [].concat.apply(prev,curr[prop]);
  33. }
  34. }
  35.  
  36. function findPoll(id){
  37. return data
  38. .reduce(flattenMap('poll'),[])
  39. .find(findPollById(id));
  40. }
  41.  
  42. function findInner(id){
  43. return data_nested
  44. .reduce(flattenMap('poll'),[])
  45. .reduce(flattenMap('inner'),[])
  46. .find(findPollById(id));
  47. }
  48.  
  49. var poll=findPoll(4);
  50. var inner=findInner(2);
  51.  
  52. console.log(poll);
  53. console.log(inner);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement