преобразование массива объектов javascript в es6 / 7 - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в Javascript, мне обычно нужно обрабатывать преобразование между объектом и массивом, но как я могу сделать это более элегантным или чистым в ES6 / 7, например использовать Spread syntax или lodash ..., а неиспользуйте для итерации цикла. (так как мне не нравятся изменяемые вещи.)

Я хочу преобразовать следующий объект:

{
  book: {
    1001: 'a', 
    1002: 'b', 
    1003: 'c'
  },
  game: {
    1001: 'a'
  }
}

в массив объекта ниже:

[
  {
    category: 'book',
    item: [
      { id: 1001, name: 'a' },
      { id: 1002, name: 'b' },
      { id: 1003, name: 'c' }
    ]
  }, 
  {
    category: 'game',
    item: [
      { id: 1001, name: 'a' }
    ]
  }
]

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете строить новые объекты и отображать внутренние объекты как новые.

var data = { book: { 1001: 'a', 1002: 'b', 1003: 'c' }, game: { 1001: 'a' } },
    result = Object
        .entries(data)
        .map(([category, item ]) => 
            ({ category, item: Object.entries(item).map(([id, name]) => ({ id, name })) }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...