Задать вопрос
jeerjmin
@jeerjmin

Как разбить массив на неопределенное количество массивов?

Получаю с API массив объектов, где свойство type определяет категорию товара, мне нужно чтобы в reduxStore этот массив преобразился в несколько в зависимости от категории.

Например action.data выглядит так.
[
{
name: Карандаш,
type: 0
},
{
name: Ручка,
type: 0
},
{
name: Бумага,
type: 1
},
{
name: Кресло,
type: 2,
},
{
name: Стол,
type: 6,
},
{
name: Стул,
type: 10,
}
]


А в итоге ReduxStore должен выглядить так

Store = {
Type0: [ { name: Карандаш, type: 0 }, { name: Ручка, type: 0 } ],
Type1: [ { name: Бумага, type: 1 } ],
Type2: [ { name: Кресло, type: 2 } ],
Type6: [ { name: Стол, type: 6 } ],
Type10: [ {name: Стул, type: 10 } ]
}


Помогите с реализацией, пожалуйста.
И легально ли этим заниматься в редьюсере ? Может быть middleware лучше подойдет для этого?
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
const result = array.reduce((acc, el) => {
  const key = 'Type' + el.type;
  acc[key] = acc[key] ? [...acc[key], el] : [el];

  return acc;
}, {});


И легально ли этим заниматься в редьюсере ? Может быть middleware лучше подойдет для этого?

Легально. Главное придерживаться одного стиля в организации кода, чтобы не было так, что в одном месте данные преобразуются в редьюсере, в другом в middleware.
Помимо этого, под частные потребности компонента данные можно преобразовывать в селекторах, передаваемых в mapStateToProps.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы