jquery array group by

后端 未结 3 1626
萌比男神i
萌比男神i 2020-11-29 13:02

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...

<         


        
3条回答
  •  失恋的感觉
    2020-11-29 13:57

    Underscore.js has groupBy, and the rest can be done by mapping 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/

提交回复
热议问题