【问题标题】:Is there a way in lodash to merge an array of objects?lodash 有没有办法合并对象数组?
【发布时间】:2021-07-15 01:32:23
【问题描述】:

我坚持在 JavaScript 中合并一组对象。我想将它们合并到一个对象中,使用 JS 库或 lodash。

我的数组是这样的

[{
    2017: {
      a: "100",
      b: "200"
    },
    2018: {
      a: "101",
      b: "202"
    },
    ...
  },

  {
    2017: {
      a: "300",
      b: "400"
    },
    2018: {
      a: "303",
      b: "404"
    },
    ...
  },

  ...
]

我希望我的结果看起来像这样:

[{
  2017: {
    a: "400",
    b: "600"
  },
  2018: {
    a: "404",
    b: "606"
  },

  ...
}]

这有一个简单的方法来实现吗?在这里输入代码

【问题讨论】:

    标签: javascript json data-structures lodash


    【解决方案1】:

    类似这样的:

    let res = [
        {
            2017: {
                a: "100",
                b: "200",
            },
            2018: {
                a: "101",
                b: "202",
            },
        },
        {
            2017: {
                a: "300",
                b: "400",
            },
            2018: {
                a: "303",
                b: "404",
            },
        },
    ].reduce((acc, el) => {
        Object.keys(el).forEach(year => {
            if(acc[year]){
                acc[year]["a"] += parseInt(el[year]['a']) 
                acc[year]["b"] += parseInt(el[year]['b']) 
            } else {
                acc[year] = {
                    a: parseInt(el[year]['a']),
                    b: parseInt(el[year]['b']) 
                }
            }
        })
        return acc;
    }, {});
    
    console.log(res)

    Object.keys 仅当数组中的对象内可能有不同年份时才需要,但如果这些年份始终是 2017 年和 2018 年,则可以将其删除

    【讨论】:

    • 非常感谢 Berto,效果很好,而且我的情况肯定需要 Object.keys,谢谢你照顾这个案例!
    • @Miss.Q 不客气!如果问题解决了您的问题,请随时将问题标记为正确
    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 2017-02-22
    • 2020-12-20
    • 1970-01-01
    • 2019-05-07
    • 2015-07-07
    相关资源
    最近更新 更多