簡體   English   中英

如何從現有的 object 數組中創建嵌套 object 的新數組

[英]How to create new array of nested object form an existing array of object

請幫助在js中重構object。

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 required = [
  {
    id: 1612,
    Tasks: 'Remuneration sheet mentain.',
    week: [
      { w_no: 45, calendar_year: 2021, WeekStartDate: '2021-10-31', WeekEndDate: '2021-11-06', status: 'Done' },
      { w_no: 46, calendar_year: 2021, WeekStartDate: '2021-11-28', WeekEndDate: '2021-12-04', status: 'Done' },
    ],
  },
  {
    id: 1939,
    Tasks: 'Debtors Reconciliation',
    week: [
      { w_no: 45, calendar_year: 2021, WeekStartDate: '2021-10-31', WeekEndDate: '2021-11-06', status: 'Done' },
      { w_no: 46, calendar_year: 2021, WeekStartDate: '2021-11-28', WeekEndDate: '2021-12-04', status: 'Done' },
    ],
  },
];

我認為您要做的是嵌套數組?

我不完全確定您要實現的目標,因為代碼格式不正確,但請嘗試使用 Google 搜索 Nested Arrays。

應該是這樣的:

{id:   ,Task:    ,Week:[]}

這實際上只是按id分組並在數組中累積相關屬性的“分組”。 這里使用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 result = Object.values( o.reduce((a, { id, Tasks, ...week }) => { (a[id]??= { id, Tasks, week: [] }).week.push(week); return a; }, {}) ); console.log(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM