You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按groupId合并对象数组,构建含members字段的API目标数据结构

按groupId分组用户至目标API数据结构

我正在创建一个API,需要实现如下目标数据结构:
Groups:[{ groupId, name, members:[{userId, first_name, last_name, joinedDate, leftDate}] }]
其中members字段需包含所有拥有相同groupId的用户。以下是输入数据及分组实现方案:

输入数据

[ 
  { 
    groupId    : 1,
    name       : 'test group',
    userId     : 2,
    first_name : 'Ross',
    last_name  : 'Geller',
    joinedDate : '2022-01-13T13:25:43.510Z',
    leftDate   : '2023-02-24T19:07:11.110Z'
  },
  { 
    groupId    : 12,
    name       : 'test group 2',
    userId     : 2,
    first_name : 'Ross',
    last_name  : 'Geller',
    joinedDate : '2022-01-13T00:00:00.000Z',
    leftDate   : null
  },
  { 
    groupId    : 12,
    name       : 'test group 2',
    userId     : 6,
    first_name : 'Joey',
    last_name  : 'Tribbiani',
    joinedDate : '2022-01-13T00:00:00.000Z',
    leftDate   : null
  } 
]

分组实现方案

使用JavaScript的Array.reduce()方法完成分组逻辑,通过groupId维护分组映射,提取用户信息并归集到对应组的members数组中:

const input = [/* 上述输入数据 */];

const groupedGroups = Object.values(input.reduce((acc, item) => {
  // 初始化新分组结构
  if (!acc[item.groupId]) {
    acc[item.groupId] = {
      groupId: item.groupId,
      name: item.name,
      members: []
    };
  }
  // 提取用户信息并加入对应组
  const member = {
    userId: item.userId,
    first_name: item.first_name,
    last_name: item.last_name,
    joinedDate: item.joinedDate,
    leftDate: item.leftDate
  };
  acc[item.groupId].members.push(member);
  return acc;
}, {}));

最终输出结果

[ 
  { 
    groupId : 1,
    name    : 'test group',
    members: [
      { 
        userId     : 2,
        first_name : 'Ross',
        last_name  : 'Geller',
        joinedDate : '2022-01-13T13:25:43.510Z',
        leftDate   : '2023-02-24T19:07:11.110Z'
      }
    ]
  },
  { 
    groupId : 12,
    name    : 'test group 2',
    members: [
      { 
        userId     : 2,
        first_name : 'Ross',
        last_name  : 'Geller',
        joinedDate : '2022-01-13T00:00:00.000Z',
        leftDate   : null
      },
      { 
        userId     : 6,
        first_name : 'Joey',
        last_name  : 'Tribbiani',
        joinedDate : '2022-01-13T00:00:00.000Z',
        leftDate   : null
      }
    ]
  }
]

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:33:19