json - Simplify object calculations using javascript -


i have saved json object in variable , making calculations off of properties within object; however, finding calculations long write , if data becomes larger, calculations can become pretty long.

i hoping there simpler way make calculations how doing it.

here json data saved within javascript file:

var obj = {   "open": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":6,     "sprint_6":38,     "sprint_7":7   }],   "design": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":null,     "sprint_6":1,     "sprint_7":null   }],   "requirement": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":1,     "sprint_6":1,     "sprint_7":null   }],   "ready_for_build": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":4,     "sprint_6":2,     "sprint_7":null   }],   "build": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":12,     "sprint_6":1,     "sprint_7":null   }],   "ready_for_test": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":4,     "sprint_6":4,     "sprint_7":null   }],   "test": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":5,     "sprint_6":6,     "sprint_7":null   }],   "ready_for_acceptance": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":null,     "sprint_5":3,     "sprint_6":null,     "sprint_7":null   }],   "accepted": [{     "sprint_2":38,     "sprint_3":43,     "sprint_4":57,     "sprint_5":19,     "sprint_6":null,     "sprint_7":null   }],   "total_bugs": [{     "sprint_2":47,     "sprint_3":39,     "sprint_4":71,     "sprint_5":39,     "sprint_6":null,     "sprint_7":null   }],   "bugs_success": [{     "sprint_2":37,     "sprint_3":25,     "sprint_4":42,     "sprint_5":11,     "sprint_6":null,     "sprint_7":null   }],   "bugs_in_progress": [{     "sprint_2":null,     "sprint_3":null,     "sprint_4":7,     "sprint_5":4,     "sprint_6":null,     "sprint_7":null   }] }; 

here calculation using sum numbers in various keys:

var totdone = obj.ready_for_test[0].sprint_2 + obj.ready_for_test[0].sprint_3 + obj.ready_for_test[0].sprint_4 + obj.ready_for_test[0].sprint_5 + obj.ready_for_test[0].sprint_6 + obj.ready_for_test[0].sprint_7 +     obj.test[0].sprint_2 + obj.test[0].sprint_3 + obj.test[0].sprint_4 + obj.test[0].sprint_5 + obj.test[0].sprint_6 + obj.test[0].sprint_7 +     obj.ready_for_acceptance[0].sprint_2 + obj.ready_for_acceptance[0].sprint_3 + obj.ready_for_acceptance[0].sprint_4 + obj.ready_for_acceptance[0].sprint_5 + obj.ready_for_acceptance[0].sprint_6 + obj.ready_for_acceptance[0].sprint_7 +     obj.accepted[0].sprint_2 + obj.accepted[0].sprint_3 + obj.accepted[0].sprint_4 + obj.accepted[0].sprint_5 + obj.accepted[0].sprint_6 + obj.accepted[0].sprint_7;     console.log(totdone);  

if json data expands, in order further calculations, algorithm become lengthy. there simpler way run calculations on data?

you can call getsum this

var answer = getsum(obj, 'test'); console.log(answer);  function getsum(data, key){     var sprints = data[key][0];     var sum = 0;     (var sprint in sprints){          if(sprints[sprint]){               sum += sprints[sprint];          }     }     return sum; } 

and total of all

 var total = 0;  (var key in obj){        total += getsum(onj, key);  }  console.log(total); 

if want add specific sprint values, need pass list of sprint names like

function getsum(data, key, sprintnames){     var sprints = data[key][0];     var sum = 0;     sprintnames.foreach(function(name){         if(sprints[name]){               sum += sprints[name]          }     });     return sum; }  getsum(obj, 'design', ['sprint_2', 'sprint_3']); 

Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -