Как организовать быстрый поиск/фильтрацию на JS по готовому DOM-дереву?

Сервер отдает JSON, на основе которого я строю DOM-дерево. В конечном итоге получается примерно такая структура строки, которая легко может стать табличной. И таких строк может быть до десятка тысяч.
<div class="LineId Type" id="" style="">
	<span class="CodeId">code</span>
	<span class="NameRu">name ru</span>
	<span class="NameEn">name en</span>
	<span class="SerialNum">SerialNum</span>
	<span class="Qty">Qty</span>
	<span class="Scheme">Scheme</span>
	<span class="Link">Link</span>
</div>

Как организовать максимально производительный поиск по полям (например NameRu, NameEn, SerialNum)?

Сейчас проблема примерно такая. При попытке скрытия элементов, которые не удовлетворили условию поиска, с классом "LineId" (напоминаю, их может быть очень много), происходит "зависание" браузера из-за применения "display:none;". Все упирается в перерисовку DOM.

Может быть стоит отрисовать DOM с полным набором элементов, а при поиске - чистить родительский элемент, искать внутри JSON и исходя из результата заново строить DOM?

P.S. Плагины или решения гуглил, все что нашел с помощью гугла - не может нормально перемолоть большое количество элементов.
P.P.S. Дергать "кусками" данные от сервера не представляется возможным. По некоторым причинам.
  • Вопрос задан
  • 517 просмотров
Решения вопроса 1
WestTrade
@WestTrade Автор вопроса
Сам спросил, сам ответил.
Проблему решил с помощью плагина https://github.com/jiren/StreamTable.js и Mustache.js, который правда пришлось слегка допилить.

Заходит JSON с массивом, под уникальный номер сборки создается глобальная переменная, куда сохраняется массив (сборок может быть много). При вызове - данные передаются в StreamTable.js, вуаля! Даже если выводить за раз по 1000 строк (в плагине есть средства пагинации) из 50000 полученных, то поиск все равно происходит без каких-либо серьезных задержек.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект