Sum Elements Of An Array With Specific Attribute
I wanna sum the elements of an array, but not all. Let's say that my array is: var example = [ {'id': 1, 'value': 50, 'active': true}, {'id':
Solution 1:
You can use filter and reduce like so:
var a = [{"id": 1, "value": 50, "active": true}, {"id": 2, "value": 70, "active": false}, {"id": 3, "value": 45, "active": true}, {"id": 4, "value": 50, "active": false}]
var result = a.filter(o => o.active).reduce((acc, cur) => cur.value + acc, 0)
console.log(result)
Solution 2:
You can just use reduce
, using the fact that in a numeric context true = 1
and false = 0
:
var a = [{"id": 1, "value": 50, "active": true}, {"id": 2, "value": 70, "active": false}, {"id": 3, "value": 45, "active": true}, {"id": 4, "value": 50, "active": false}]
var result = a.reduce((a, c) => a + c.value * c.active, 0)
console.log(result)
Or if you prefer, using the ternary operator:
var a = [{"id": 1, "value": 50, "active": true}, {"id": 2, "value": 70, "active": false}, {"id": 3, "value": 45, "active": true}, {"id": 4, "value": 50, "active": false}]
var result = a.reduce((a, c) => a + (c.active ? c.value : 0), 0)
console.log(result)
Solution 3:
You can prefer a simple syntax...
var example = [{"id": 1, "value": 50, "active": true}, {"id": 2, "value": 70, "active": false}, {"id": 3, "value": 45, "active": true}, {"id": 4, "value": 50, "active": false}];
var sum = 0
example.forEach(function(item, index){
if (item["active"] == true) sum += item["value"];
});
console.log(sum);
Solution 4:
I suggest you to use lodash If you need operation on array or collection
import lodash in file where you want to use it
import _ from'lodash';
// orconst _ = require('lodash');
var example = [
{"id": 1, "value": 50, "active": true},
{"id": 2, "value": 70, "active": false},
{"id": 3, "value": 45, "active": true},
{"id": 4, "value": 50, "active": false}
];
//Filter all active value
const filterData = _.filter(example, "active");
// const filterData = [
// {"id": 1, "value": 50, "active": true},
// {"id": 3, "value": 45, "active": true},
// ];
//Sum all value filter data
const sum = _.sumBy(filterData, "value");
console.log(sum)
Post a Comment for "Sum Elements Of An Array With Specific Attribute"