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

如何在JS中基于现有对象数组生成嵌套结构的新对象数组

JavaScript对象结构重构方案

你可以通过数组的reduce方法结合对象聚合实现需求,实现代码如下:

const o = [
  {
    id: 1612,
    Tasks: 'Remuneration sheet mentain.',
    calendar_year: 2021,
    calendar_week_in_year: 45,
    WeekStartDate: '2021-10-31',
    WeekEndDate: '2021-11-06',
    status: 'Done',
  },
  {
    id: 1612,
    Tasks: 'Remuneration sheet mentain.',
    calendar_year: 2021,
    calendar_week_in_year: 46,
    WeekStartDate: '2021-11-28',
    WeekEndDate: '2021-12-04',
    status: 'Done',
  },
  {
    id: 1939,
    Tasks: 'Debtors Reconciliation',
    calendar_year: 2021,
    calendar_week_in_year: 45,
    WeekStartDate: '2021-10-31',
    WeekEndDate: '2021-11-06',
    status: 'Done',
  },
  {
    id: 1939,
    Tasks: 'Debtors Reconciliation',
    calendar_year: 2021,
    calendar_week_in_year: 46,
    WeekStartDate: '2021-11-28',
    WeekEndDate: '2021-12-04',
    status: 'Done',
  },
];

// 转换逻辑
const transformed = Object.values(o.reduce((group, item) => {
  const { id, Tasks, calendar_week_in_year, ...weekInfo } = item;
  // 未分组则初始化分组项
  if (!group[id]) {
    group[id] = { id, Tasks, week: [] };
  }
  // 拼接周数据,替换键名
  group[id].week.push({
    w_no: calendar_week_in_year,
    ...weekInfo
  });
  return group;
}, {}));

console.log(transformed); // 输出即为你需要的目标结构

补充说明:如果存在相同ID对应不同任务名的业务场景,可将分组的key从id改为id + Tasks的拼接值,避免数据被错误覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:45:04