Какие плюсы и минусы у структуры данных ‘массив’?

«Какие плюсы и минусы у структуры данных ‘массив’?» — вопрос из категории Алгоритмы и структуры данных, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Массив (Array) — базовая структура данных с последовательным хранением элементов. Его характеристики справедливы и для JavaScript/Node.js.

Плюсы:

  • Быстрый доступ по индексу: Время доступа O(1), так как вычисляется смещение в памяти.
  • Отличная локальность данных: Элементы расположены в памяти последовательно, что эффективно для кэша процессора.
  • Простота и универсальность: Интуитивно понятная модель и богатый встроенный API (.map(), .filter(), .reduce()).

Минусы:

  • Медленные вставка и удаление в начало/середину: Требуется сдвиг всех последующих элементов (O(n)).
    const arr = [1, 2, 3, 4, 5];
    arr.splice(2, 0, 99); // Вставка в середину - сдвиг элементов 3,4,5
    console.log(arr); // [1, 2, 99, 3, 4, 5]
  • Фиксированный размер в низкоуровневых языках: В JavaScript массив динамический, но его рост может потребовать реаллокации и копирования в памяти.
  • Неэффективный поиск по значению: Для неотсортированного массива поиск требует O(n). Для частого поиска лучше подходит Set или Map.

Когда использовать в Node.js: Массивы идеальны для итеративных операций, когда важен порядок элементов и основная работа — это перебор или доступ по известному индексу. Для частых операций добавления/удаления с обоих концов рассмотрите использование двухсторонней очереди (например, структуры на основе связного списка).