loda sh .groupBy. Как добавить свои собственные ключи для группового вывода? - PullRequest
0 голосов
/ 12 марта 2020
[{
    "car_brand": "audi",
    "model": {
      "model_1": "audi_tt"
    }

  },
  {
    "car_brand": "audi",
    "model": {
      "model_1": "audi_r8"
    }
  }
]

в любом случае конвертируется в

[{
  "car_brand": "audi",
  "model": [{
      "model_1": "audi_tt"
    },
    {
      "model_1": "audi_r8"
    }
  ]
}]

1 Ответ

0 голосов
/ 12 марта 2020

Сначала вы можете использовать _.groupBy() для группировки каждого объекта, а затем _.map() каждой группы в объекте в массив объектов. Каждый сопоставленный объект использует ключ из сгруппированного объекта в качестве car_brand, а также использует сопоставленную версию массива сгруппированных значений в качестве свойства model:

const arr = [{ "car_brand": "audi", "model": { "model_1": "audi_tt" } }, { "car_brand": "audi", "model": { "model_1": "audi_r8" } } ];

const group = _.flow(
  inp => _.groupBy(inp, 'car_brand'),
  gr => _.map(gr, (arr, card_brand) => ({
    card_brand,
    model: _.map(arr, 'model')
  }))
);

console.log(group(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
...