javascript - Refactor loop within loop to sum up total of property -
i have data:
const data = [{ date: '2017-08-4', data: [{ "name": "male", "value": 2, }, { "name": "female", "value": 46, } ] }, { date: '2017-08-5', data: [{ "name": "male", "value": 2, }, { "name": "female", "value": 20, } ] }]
i want find total sum of value of male code.
let total_male_of_alldays = 0 data.foreach(obj => { obj.data.foreach(obj2 => { if(obj2.name === 'male'){ total_male_of_alldays += obj2.value } }) })
the code working felt code isn't elegant enough. use native loop better performances i'm looking more readable. i'm open lodash method.
an alternate approach combination of array.prototype.reduce()
, array.prototype.find()
.
data.reduce((result, entry) => { result += entry.data.find(d => d.name === "male").value; return result; }, 0);
warning: yield correct result if there one male
entry in data
!
const data = [{ date: '2017-08-4', data: [{ "name": "male", "value": 2, }, { "name": "female", "value": 46, }] }, { date: '2017-08-5', data: [{ "name": "male", "value": 2, }, { "name": "female", "value": 20, }] }]; const total_male_of_alldays = data.reduce((result, entry) => { result += entry.data.find(d => d.name === "male").value; return result; }, 0); console.log(total_male_of_alldays);
wiki
Comments
Post a Comment