Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. function deepSum(o,n) {
  2. var c=0;
  3. _.each(_.keys(o||{}), k => { k===n ? c+=parseInt(o[n])||0 : c+=deepSum(o[k],n)});
  4. return c;
  5. }
  6.  
  7. var item = {
  8. doc_count: 2,
  9. val: {
  10. buckets: [{
  11. one: {
  12. doc_count: 10,
  13. count: 100
  14. },
  15. two: {
  16. doc_count: 2
  17. }
  18. }, {
  19. doc_count: 3
  20. }],
  21. doc_count: 4
  22. }
  23. }
  24.  
  25. var total = deepSum(item, "doc_count");
  26. console.log("Total 21 === ", total);
  27.  
  28. var fail_path_item = {
  29. doc_count: null,
  30. val: {
  31. buckets: [{
  32. one: {
  33. doc_count: [],
  34. count: 100,
  35. test: {
  36. doc_count: function(){ return 1000 }
  37. }
  38. },
  39. two: {
  40. doc_count: "",
  41. nested: {
  42. doc_count: 5
  43. }
  44. }
  45. }, {
  46. doc_count: "zxc0FF"
  47. }],
  48. doc_count: 7,
  49. undef:{
  50. doc_count: undefined
  51. }
  52. }
  53. }
  54.  
  55. console.log("Total 12 === ", deepSum(fail_path_item, "doc_count"));
  56. console.log("Total 15 === ", deepSum({doc_count: "0xF"}, "doc_count"));
  57. console.log("Total 0 === ", deepSum({}, "doc_count"));
  58. console.log("Total 0 === ", deepSum(null, "doc_count"));
  59. console.log("Total 0 === ", deepSum(undefined, "doc_count"));
  60. console.log("Total 0 === ", deepSum(NaN, "doc_count"));
  61. console.log("Total 0 === ", deepSum(1/0, "doc_count"));
  62.  
  63. function Obj(){
  64. this.doc_count = 1
  65. }
  66. Obj.prototype.createNested = function() {
  67. this.prop = {
  68. doc_count: 10
  69. }
  70. }
  71. var objItem = new Obj()
  72. objItem.createNested()
  73. console.log("Total 11 === ", deepSum( objItem, "doc_count"));
  74.  
  75.  
  76. class User {
  77. constructor( count ) {
  78. this.score = count ;
  79. this.prevScores = [{ score: count+1 }]
  80. }
  81. }
  82. console.log("Total 201 === ", deepSum( new User(100), "score"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement