Typescript lodash Groupby вложенный массив - PullRequest
0 голосов
/ 11 октября 2018

Может ли кто-нибудь помочь мне с тем, как использовать lodash groupby для достижения приведенного ниже ввода в мой желаемый вывод?Я попробовал методы lodash groupby, как обсуждалось в других ссылках, но не смог получить результат, который я ожидал. Ввод:

inputList: dataMaster[] = [
  {
    "isSelected": true,
    "GroupKey": "G1",
    "GroupName": "Group1",
    "Key": "Key1",
    "Name": "Key Name 1"
  },
  {
    "isSelected": true,
    "GroupKey": "G1",
    "GroupName": "Group1",
    "Key": "Key2",
    "Name": "Key Name 2"
  },
  {
    "isSelected": true,
    "GroupKey": "G2",
    "GroupName": "Group2",
    "Key": "Key1",
    "Name": "Key Name 1"
  },
  {
    "isSelected": true,
    "GroupKey": "G2",
    "GroupName": "Group2",
    "Key": "Key2",
    "Name": "Key Name 2"
  }

Ожидается вывод, как показано ниже:

outputList: dataGroup[] = [
       {
          GroupKey:"G1",
          GroupName:"Group1",
          Group:[
             {
                Key:"Key1",
                Name:"Key Name 1"
             },
             {
                Key:"Key2",
                Name:"Key Name 2"
             }
          ]
       },
       {
          GroupKey:"G2",
          GroupName:"Group2",
          Group:[
             {
                Key:"Key1",
                Name:"Key Name 1"
             },
             {
                Key:"Key2",
                Name:"Key Name 2"
             }
          ]
       }
    ]

1 Ответ

0 голосов
/ 11 октября 2018

Вот, пожалуйста,

// Change as necessary for your module loading configuration
import _ = require("lodash");

let grouped1 = _.groupBy(inputList, (dm) => dm.GroupKey);
let outputList: dataGroup[] = Object.keys(grouped1).map((groupKey) => {
    let groupItems = grouped1[groupKey];
    return {
        GroupKey: groupKey,
        GroupName: groupItems[0].GroupName,
        Group: groupItems.map((dm) => _.pick(dm, "Key", "Name"))
    };
});

Дайте мне знать, если у вас есть вопросы о том, как это работает.

...