@danilr

Как организовать фильтр по огромному массиву данных?

В общем я получаю массив данных из 3000 записей и сразу записываю его во vuex.
Имеется в интерфейсе пользователя - много разных фильтраций по разным параметрам.

Прошу подсказки как это все организовать?
К примеру, мне делать копию массива при получении и с ним выполнять изменения или использовать getters?

Если я буду перезаписывать после после фильтрации массив, то если пользователь отменит фильтр, как мне обратно получить и т.п.

Не было еще опыта, где много возможных параметров фильтрации имеется, обычно только один был.
Понимаю, вопрос достаточно абстрактный, но если кого не затруднит по опыту описать как это делается, буду крайне благодарен.
  • Вопрос задан
  • 355 просмотров
Решения вопроса 1
@ned4ded
Верстка, Фронтенд
Добрый день!

В общих чертах: фильтруемые данные должны быть иммутабельны (что немного против философии vue). Следовательно, вы в модуле, через который делаете апи колл на получение данных, пишите геттеры на разные "срезы" этого массива.

Ps
Возможно, вам стоит сразу после получения ответа нормализовать данные: разбить на flatten массивы, преобразовать массивы в объект с ключами - айдишниками; иначе если у вас тяжеловесный массив на 10к+ ("огромность" такого массива может не сильно влиять на производительность, все зависит от многих факторов, но у меня такие просадки появились в тот момент, когда я начал обрабатывать порядка 50к плоских объектов) объектов с огромным количеством полей, то все это может начать тормозить, особенно если у вас частые обновления дома, связанные с этим массивом.

+ помните, что после добавления в стор все объекты оборачиваются в специальные vue-конструкции, которые позволяют сделать данные реактивными, в связи с чем может быть сильная просадка производительности при загрузки в стор без асинхронных чанков.

Возможно, вам пригодится https://github.com/vuex-orm/vuex-orm, особенно если массив имеет несколько повторяющихся сущностней.

ps2 300 объектов - это не огромный массив ;) вам вполне подойдет все, что описано "в общих чертах", оптимизация вряд ли понадобится.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы