В настоящее время у меня есть массив объектов, таких как:
const array = [
{ key: 'model_1', year: 2019, displayOrder: 1},
{ key: 'model_1', year: 2018, displayOrder: 2},
{ key: 'model_2', year: 2018, displayOrder: 3},
{ key: 'model_3', year: 2018, displayOrder: 4},
{ key: 'model_4', year: 2019, displayOrder: 5},
{ key: 'model_5', year: 2018, displayOrder: 6},
];
Я пытаюсь сгенерировать новый массив, который группирует объекты по current
и previous
годам и порядки по displayOrder
. Если бы мы применили это к вышеуказанному массиву, это выглядело бы так:
const array = {
current: [
{ key: 'model_1', year: 2019, displayOrder: 1 },
{ key: 'model_2', year: 2018, displayOrder: 3 },
{ key: 'model_3', year: 2018, displayOrder: 4 },
{ key: 'model_4', year: 2019, displayOrder: 5 },
{ key: 'model_5', year: 2018, displayOrder: 6 },
],
previous: [
{ key: 'model_1', year: 2018, displayOrder: 2 },
{ key: 'model_4', year: 2018, displayOrder: 7 },
],
};
Теория, лежащая в основе этого, заключается в том, что он должен показывать текущую версию модели. Это будет основано на самом последнем году для модели.
Я попытался сделать это, создав сокращающую функцию, которая группирует их по годам, но я не думаю, что это правильный подход, поскольку может потребоваться много накладных расходов, чем изменять его дальше.
const modelsByYear = array.reduce((acc, model) => {
acc[model.year] = acc[model.year] || [];
acc[model.year].push(model);
return acc;
}, Object.create(null));
Каковы некоторые предложения о том, как я могу это сделать?
EDIT:
Мне нужна эта причина для фильтрации. Если я нажму current
или previous
, мне нужно увидеть соответствующие модели.