【问题标题】:Javascript - Combine a list of objects if the have same property [closed]Javascript - 如果具有相同的属性,则组合对象列表[关闭]
【发布时间】:2022-01-04 20:45:21
【问题描述】:

我有一个这样的对象数组:

[
 {
     "event" : {
         "teams": "bla bla",
     }
 },
 {
     "event" : {
         "teams": "bla bla",
     }
 },
]

如何将具有相同团队价值的所有事件组合成一个数组,如下所示:

[
  {
      "event" : [
          {
              "teams" : "bla bla"
          },
          {
              "teams": "bla bla"
          },
      ]
   }
 ]

我只能用 lodash

【问题讨论】:

  • 只是event 属性?
  • 是的,主数组中的每个对象都只有事件属性
  • 为什么要创建一个只有一个元素的数组?
  • 不,因为赛事比团队拥有更多的属性

标签: javascript node.js arrays json


【解决方案1】:

这会将第一个对象 objectArray 转换为另一个对象。

const combinedArray = [{ event: objectArray.map(obj => obj.event) }];

编辑:按团队分组

const groupedArray = [];
const teams = new Set(objectArray.map(obj => obj.event.teams).filter(n=>n));
for (const team of teams)
    groupedArray.push({ event: objectArray.map(obj=>obj.event).filter(event => event.teams === team)});

【讨论】:

  • 什么都没做
  • @ChamsAgouni 你是什么意思?
  • 但我还有其他具有不同团队属性的事件,我不希望它们合并到此
  • 所以我想找到所有具有相同团队属性的事件并将它们组合在一个数组中,如果一个事件没有相同的团队属性,它将保持原样
  • @ChamsAgouni 查看更新的答案
猜你喜欢
  • 2021-11-11
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多