I have array like this
abcArr = [[\"A\", 10], [\"B\", 20], [\"A\",30],[\"C\",40]]
how can I group and sum values by A, B, C...
<
Underscore.js has groupBy
, and the rest can be done by map
ping over reduce
(that is, reducing each group to one element
abcArr = [["A", 10], ["B", 20], ["A",30],["C",40]]
var grouped = _.groupBy(abcArr, function(x){return x[0]})
var result = _.map(grouped, function(x){
return _.reduce(x, function(x,y){
return [y[0], x[1]+y[1]];
}, [,0])
})
http://jsfiddle.net/srvKQ/
Or (minified)
abcArr = [["A", 10], ["B", 20], ["A",30],["C",40]]
var result = _.map(
_.groupBy(abcArr, function(x){return x[0]}),
function(x){return _.reduce(
x, function(x,y){return [y[0], x[1]+y[1]]}, [,0]
)});
http://jsfiddle.net/srvKQ/1/