最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Sum properties child objects with lodash - Stack Overflow

programmeradmin1浏览0评论

I use lodash in my project. I have a JSON

 { 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
     },
  }
}

I would like to receive as a result of JSON

{
  arcade: {
    played: 20,
    wins: 10,
    lose: 10
  },
  pvp: {
    played: 20,
    wins: 10,
    lose: 10
  },
}

how to calculate the sum of values child objects with js/lodash? Thanks.

I use lodash in my project. I have a JSON

 { 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
     },
  }
}

I would like to receive as a result of JSON

{
  arcade: {
    played: 20,
    wins: 10,
    lose: 10
  },
  pvp: {
    played: 20,
    wins: 10,
    lose: 10
  },
}

how to calculate the sum of values child objects with js/lodash? Thanks.

Share Improve this question asked Jan 13, 2015 at 9:41 aleksey080aleksey080 1874 silver badges13 bronze badges 1
  • Do you know how to iterate over objects? – Ja͢ck Commented Jan 13, 2015 at 9:44
Add a ment  | 

1 Answer 1

Reset to default 2

http://jsfiddle/efmmh8ok/
I would use reduce function (lodash doc)

 _.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}}
}, {});
发布评论

评论列表(0)

  1. 暂无评论