【问题标题】:Best way to merge objects using key in an array?使用数组中的键合并对象的最佳方法?
【发布时间】:2021-03-08 02:46:44
【问题描述】:

使用键合并数组中对象的最佳方法是什么?

[
   {
      "refr": "https://example.com/",
      "transactions": 1
   },
   {
      "refr": null,
      "pageviews": 1
   },
   {
      "refr": "https://example.com/",
      "pageviews": 1
   }
]

使用'refr'键的期望结果:

[
   {
      "refr": "https://example.com/",
      "transactions": 1,
      "pageviews": 1
   },
   {
      "refr": null,
      "pageviews": 1
   },   
]

我正在寻找一种不使用任何第三方工具(如 lodash)的解决方案。

【问题讨论】:

    标签: javascript arrays json object ecmascript-6


    【解决方案1】:

    使用Array.prototype.reduce,您可以通过refr 键对值进行分组。

    const input = [
       {
          "refr": "https://example.com/",
          "transactions": 1
       },
       {
          "refr": null,
          "pageviews": 1
       },
       {
          "refr": "https://example.com/",
          "pageviews": 1
       }
    ];
    
    const groupByRefr = input.reduce((acc, cur) => {
      acc[cur.refr] ? acc[cur.refr] = { ...acc[cur.refr], ...cur } : acc[cur.refr] = cur;
      return acc;
    }, {});
    const result = Object.values(groupByRefr);
    console.log(result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 2020-11-26
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      相关资源
      最近更新 更多