Угловые плоские данные в массив объектов - PullRequest
0 голосов
/ 29 сентября 2018

Я посмотрел несколько примеров, но я просто не понимаю.У меня есть плоский набор данных, который я хочу преобразовать во вложенную структуру в машинописном тексте. Я понимаю / считаю, что мне нужно будет использовать .map и .forEach, но я просто не знаю, как это сделать.

У меня есть такие данные:

origData = [
        {name: 'Grass', value: 'bulbasaur-0', viewValue: 'Bulbasaur'},
        {name: 'Grass', value: 'oddish-1', viewValue: 'Oddish'},
        {name: 'Grass', value: 'bellsprout-2', viewValue: 'Bellsprout'},
        {name: 'Water', value: 'squirtle-3', viewValue: 'Squirtle'},
        {name: 'Water', value: 'psyduck-4', viewValue: 'Psyduck'},
        {name: 'Water', value: 'horsea-5', viewValue: 'Horsea'},
        {name: 'Fire', value: 'charmander-6', viewValue: 'Charmander'},
        {name: 'Fire', value: 'vulpix-7', viewValue: 'Vulpix'},
        {name: 'Fire', value: 'flareon-8', viewValue: 'Flareon'},
        {name: 'Psychic', value: 'mew-9', viewValue: 'Mew'},
        {name: 'Psychic', value: 'mewtwo-10', viewValue: 'Mewtwo'},
  ];

, и я хочу, чтобы они выглядели так:

pokemonGroups: PokemonGroup[] = [
    {
      name: 'Grass',
      pokemon: [
        {value: 'bulbasaur-0', viewValue: 'Bulbasaur'},
        {value: 'oddish-1', viewValue: 'Oddish'},
        {value: 'bellsprout-2', viewValue: 'Bellsprout'}
      ]
    },
    {
      name: 'Water',
      pokemon: [
        {value: 'squirtle-3', viewValue: 'Squirtle'},
        {value: 'psyduck-4', viewValue: 'Psyduck'},
        {value: 'horsea-5', viewValue: 'Horsea'}
      ]
    },
    {
      name: 'Fire',
      disabled: true,
      pokemon: [
        {value: 'charmander-6', viewValue: 'Charmander'},
        {value: 'vulpix-7', viewValue: 'Vulpix'},
        {value: 'flareon-8', viewValue: 'Flareon'}
      ]
    },
    {
      name: 'Psychic',
      pokemon: [
        {value: 'mew-9', viewValue: 'Mew'},
        {value: 'mewtwo-10', viewValue: 'Mewtwo'},
      ]
    }
  ];

1 Ответ

0 голосов
/ 29 сентября 2018

Это будет намного проще, если вы используете служебную библиотеку, такую ​​как Underscore .

import * as _ from "underscore";

let groups1 = _.groupBy(origData, (p) => p.name);
let pokemonGroups = Object.keys(groups1).map((type) =>
    ({ name: type, pokemon: groups1[type].map(({name, ...rest}) => rest) }));
...