如何在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
相关产品推荐
相关产品推荐

