【问题标题】:How to Combine Multiple Objects by id [duplicate]如何通过 id 组合多个对象 [重复]
【发布时间】:2018-10-25 03:32:56
【问题描述】:

我有一个数据集,它对两个不同的对象使用相同的 _id,并在整个文件中重复此操作。如何浏览对象列表,找到具有匹配 _id 的两个对象并将它们合并为一个对象?

[    
   {
      "_id": "591323037ca83d48eac1ff31",
      "sessionStartTime": "2017-05-09T23:10:40.000Z",
      "sessionEndTime": "2017-05-10T07:28:40.000Z",
      "timeSessionMinutes": 212,
    },
    {
      "_id": "591323037ca83d48eac1ff31",
      "eventSummary": "Working",
      "eventActivity": "Work",
      "eventStart": "2017-05-09T10:00:00+02:00",
      "eventEnd": "2017-05-09T17:00:00+02:00"
    },
    {
      "_id": "5917165b3ffac25462193490",
      "sessionStartTime": "2017-05-12T22:06:09.000Z",
      "sessionEndTime": "2017-05-13T06:12:09.000Z",
      "timeSessionMinutes": 322,
    },
    {
      "_id": "5917165b3ffac25462193490",
      "eventSummary": "Traveling back home",
      "eventActivity": "Travel",
      "eventStart": "2017-05-09T17:00:00+02:00",
      "eventEnd": "2017-05-09T17:30:00+02:00"
    },
    ...
]

很抱歉,如果已经回答,找不到此特定用例的解决方案。

【问题讨论】:

标签: javascript object


【解决方案1】:

另一种方法是使用函数reduce_id 对对象进行分组,并使用函数Object.values 提取分组的对象。

let arr = [   {      "_id": "591323037ca83d48eac1ff31",      "sessionStartTime": "2017-05-09T23:10:40.000Z",      "sessionEndTime": "2017-05-10T07:28:40.000Z",      "timeSessionMinutes": 212,    },    {      "_id": "591323037ca83d48eac1ff31",      "eventSummary": "Working",      "eventActivity": "Work",      "eventStart": "2017-05-09T10:00:00+02:00",      "eventEnd": "2017-05-09T17:00:00+02:00"    },    {      "_id": "5917165b3ffac25462193490",      "sessionStartTime": "2017-05-12T22:06:09.000Z",      "sessionEndTime": "2017-05-13T06:12:09.000Z",      "timeSessionMinutes": 322,    },    {      "_id": "5917165b3ffac25462193490",      "eventSummary": "Traveling back home",      "eventActivity": "Travel",      "eventStart": "2017-05-09T17:00:00+02:00",      "eventEnd": "2017-05-09T17:30:00+02:00"    }],
    result = Object.values(arr.reduce((a, c) => {
      Object.assign((a[c['_id']] || (a[c['_id']] = Object.create(null))), c);
      return a;
    }, Object.create(null)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 谢谢,完美运行!
  • @Samsoedien 不客气! (:
猜你喜欢
  • 1970-01-01
  • 2011-09-20
  • 2021-08-06
  • 1970-01-01
  • 2021-09-26
  • 2023-01-24
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多