Javascript typescript中的Json格式(Angular 7) 我有一个嵌套的json,如下所示。 我需要根据以下表格对详细信息进行分组。

Javascript typescript中的Json格式(Angular 7) 我有一个嵌套的json,如下所示。 我需要根据以下表格对详细信息进行分组。,javascript,json,ecmascript-6,Javascript,Json,Ecmascript 6,如何在typescript中实现这一点 通过NPM groupBy,但我认为这并不能真正解决我的问题。 还有其他方法吗?如果我理解正确,这将是array reduce方法的一个很好的用例,例如: const cards = [ { id: 1, details: [ {id:1}, {id:2} ], sheet:{ id:1 } }, { id:2, details: [ {id

如何在typescript中实现这一点

通过NPM groupBy,但我认为这并不能真正解决我的问题。
还有其他方法吗?

如果我理解正确,这将是array reduce方法的一个很好的用例,例如:

const cards = [
  {
    id: 1,
    details: [
      {id:1},
      {id:2}
    ],
    sheet:{
      id:1
    }
  },
  {
    id:2,
    details: [
      {id:3},
      {id:4}
    ],
    sheet:{
      id:1
    }
  },
  {
    id:3,
    details: [
      {id:5},
      {id:6}
    ],
    sheet:{
      id:2
    }
  }
];

const sheets = cards.reduce( (sheets: Array<any>, card: any) => {
  const existingSheet = sheets.find(sheet => card.sheet.id === sheet.id);
    if (existingSheet) {
      existingSheet.details.concat(card.details);
    } else {
      sheets.push({id: card.sheet.id, details: card.details});
    }
    return sheets;
  }, []
);

console.log(sheets);

首先,我不认为瘦身既不是打字也不是角度问题。看起来它的javascript问题。在嵌套的json中是否有表id为1以外的任何卡片对象?在创建嵌套对象的位置添加代码。我使用@superviser作为第二个选项,您只需使用下划线或其他库即可解决此问题,使用u.groupBy即可
{
sheet:{
    id:1,
    details:[{id:1},{id:2},{id:3},{id:4}]
}
 }
const cards = [
  {
    id: 1,
    details: [
      {id:1},
      {id:2}
    ],
    sheet:{
      id:1
    }
  },
  {
    id:2,
    details: [
      {id:3},
      {id:4}
    ],
    sheet:{
      id:1
    }
  },
  {
    id:3,
    details: [
      {id:5},
      {id:6}
    ],
    sheet:{
      id:2
    }
  }
];

const sheets = cards.reduce( (sheets: Array<any>, card: any) => {
  const existingSheet = sheets.find(sheet => card.sheet.id === sheet.id);
    if (existingSheet) {
      existingSheet.details.concat(card.details);
    } else {
      sheets.push({id: card.sheet.id, details: card.details});
    }
    return sheets;
  }, []
);

console.log(sheets);