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
Post a Comment