数据合并

语言

一组健身课程的数据集如下所示:

[
{ user: 8, duration: 50, equipment: ['bench'] },
{ user: 7, duration: 150, equipment: ['dumbbell'] },
{ user: 1, duration: 10, equipment: ['barbell'] },
{ user: 7, duration: 100, equipment: ['bike', 'kettlebell'] },
{ user: 7, duration: 200, equipment: ['bike'] },
{ user: 2, duration: 200, equipment: ['treadmill'] },
{ user: 2, duration: 200, equipment: ['bike'] },
];

每个课程都有以下字段:

  • user:课程用户的用户 ID。
  • duration:课程的持续时间,以分钟为单位。
  • equipment:课程期间使用的设备数组,按字母顺序排列。只有 5 种不同的设备。

实现一个方法 mergeData,用于通过合并每个用户的数据来返回每个用户活动的统一视图。它具有接口 mergeData(sessions)。来自同一 user 的会话应合并到一个对象中。合并时:

  • 汇总 duration 字段。
  • 组合所有使用的 equipment,对值进行去重并按字母顺序排序。

结果的顺序应始终与原始集合保持不变,并且在合并具有相同用户的会话的情况下,该行应占据该 user最早出现的位置。输入对象不应被修改。

示例

以下示例使用上述数据集:

mergeData(sessions);
// [
// { user: 8, duration: 50, equipment: ['bench'] },
// { user: 7, duration: 450, equipment: ['bike', 'dumbbell', 'kettlebell'] },
// { user: 1, duration: 10, equipment: ['barbell'] },
// { user: 2, duration: 400, equipment: ['bike', 'treadmill'] },
// ];

用户 7 和用户 2 的数据合并到该用户的第一次出现。

在这些公司提问

高级版功能购买高级版以查看出题公司。
查看计划