Фронтенд лінійні структури даних
Лінійні структури даних впорядковують елементи в послідовність. Кожен елемент має одного попередника та одного наступника.
Масиви Масиви є основним інструментом у JavaScript. Вони використовують безперервну пам'ять. Це дозволяє миттєво отримати доступ до будь-якого елемента за його індексом.
- push: додає елемент у кінець.
- unshift: додає елемент на початок. Це повільно, оскільки кожен інший елемент має зміститися на одну позицію вправо.
- splice: додає або видаляє елементи в будь-якій позиції. Цей метод змінює оригінальний масив. Він не є чистою функцією.
Примітка: коли масив стає занадто великим, JavaScript має виділити більший блок пам'яті та скопіювати туди всі дані. Це впливає на продуктивність.
Стеки Стек дотримується правила LIFO: Last In, First Out. Уявіть стопку тарілок. Ви додаєте або забираєте елементи лише зверху.
- push: додає зверху.
- pop: видаляє зверху.
- peek: дозволяє подивитися на верхній елемент, не видаляючи його.
Черги Черга дотримується правила FIFO: First In, First Out. Уявіть чергу в магазині.
- push: додає в кінець.
- shift: видаляє з початку.
Попередження: використання shift у масиві є повільним для великих наборів даних. Кожен елемент має зміститися вліво, щоб заповнити прогалину. Для великих обсягів даних замість цього використовуйте зв'язаний список.
Зв'язані списки Зв'язаний список складається з вузлів. Кожен вузол містить дані та покажчик на наступний вузол.
- Переваги: додавання або видалення вузлів відбувається швидко, як тільки ви знайдете потрібне місце. Ви змінюєте лише покажчики.
- Недоліки: ви не можете миттєво перейти до певного індексу. Ви повинні почати з голови списку та послідовно проходити по покажчиках. Це повільно.
Підсумок порівняння:
- Масиви: найкраще підходять для частого читання та невеликих обсягів даних. Доступ має складність O(1).
- Зв'язані списки: найкраще підходять для частого запису та великих обсягів даних. Вставка має складність O(1), якщо у вас уже є вузол.
Професійні поради для JavaScript:
- Не змішуйте типи даних у масиві. Підтримання однорідності типів допомагає рушію використовувати безперервну пам'ять.
- Завжди використовуйте функцію-компаратор під час сортування чисел. [10, 2].sort() поверне [10, 2], оскільки сорту