reduce

by willtx

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>

JavaScript

var ori = {
    arcade: {
        sam: {
            played: 10,
            wins: 5,
            lose: 5
        },
        adam: {
            played: 10,
            wins: 5,
            lose: 5
        },
    },

    pvp: {
        sam: {
            played: 10,
            wins: 5,
            lose: 5
        },
        adam: {
            played: 10,
            wins: 5,
            lose: 5
        },
    }
};

var result = _.reduce(ori, function (ori1, data1, c) {
    ori1[c] = _.reduce(data1, function (ori2, data2) {
        _.each(data2, function (value, key) {
            ori2[key] = ori2[key] || 0; // if it undefined yet put number 0 
            ori2[key] += value; // sum with the previous value
        });
        return ori2; // the populated data {played: 20, wins: 10, lose: 10}
    }, ori1[c] || {});
    return ori1; // the populated data {pvp: {played: 20, wins: 10, lose: 10}}
}, {});

alert(JSON.stringify(result));