Комментарии 7
А взяли бы нормальный фреймворк и темы для статьи бы не было. Вот, предельно наивный пример с 10к строк с группировкой: https://nin-jin.github.io/my_gitlab/
Под вложенным циклом подразумевают одну из самых медленных форм алгоритмической сложности — квадратичную сложность O(n^2). Она не подходит для масштабирования: при увеличении объёма входных данных время работы растёт экспоненциально.
Обычная полиномиальная сложность, тысячи алгоритмов имеют такую или похожую сложность. И время работы не растет экспоненциально, а квадратично. Вы перепутали с 2^poly(n) - это вот реально беда.
При реализации метода push
время работы алгоритма будет O(1), то есть алгоритм будет выполняться за константное время.
У метода push время выполнения не гарантировано константно, оно может деградировать до O(N).
Это не важно, асимптотически-то O(1), поэтому на большом количестве добавлений будет норм.
Но вообще O(n²) в [...prev] — это очень распространённая в js штука. Отчасти она обусловлена в желании делать «чистые» функции, которые не мутируют входные аргументы. Чистая функция — не нужно думать. Но бездумные копирования всего и вся при любом «чихе» стоит ресурсов...
Буквально вчера на ревью встретилось:
array = [...array, element];
Заменили на push.
интересно! только изначальная цель - показывать табличку на 50 000 строк - для чего? ради спортивного интереса - да... надеюсь это было не в рабочее время? а, то возникает вопрос - с какого рожна ты потратил кучу вермени на чепуху?!
Ускорить таблицу на React в 1 000 раз, изменив лишь одну строку