PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Какая сложность вставки элемента в объект?

Объекты и прототипы

Сложность вставки элемента в объект — O(1) в среднем случае, потому что объект работает как хеш-таблица с доступом по ключу за константное время.

O(1) в среднем

Вставка свойства в объект — константное время: хеш-таблица вычисляет позицию по ключу напрямую, без перебора:

obj[key] = value;    // O(1) в среднем
obj.newProp = 123;   // O(1)

Не зависит от количества существующих свойств.

Худший случай — O(n)

При коллизиях в хеш-таблице (разные ключи дают одинаковый хеш) элементы попадают в одну «корзину», и операции могут деградировать до O(n). Но с хорошей хеш-функцией это редкость.

Также при рехешировании (расширении таблицы) отдельная вставка может занять больше, но амортизированно остаётся O(1).

Сравнение с другими структурами

  • Объект/Map (хеш-таблица) — вставка O(1) в среднем.
  • Массив в конец (push) — O(1) амортизированно.
  • Массив в начало/середину (unshift/splice) — O(n) (сдвиг элементов).
  • Отсортированная структура — O(log n) или O(n) для сохранения порядка.

Итерация — отдельно

Вставка O(1), но перебор всех свойств — O(n).

Коротко для собеседования

Вставка в объект — O(1) в среднем (хеш-таблица: позиция по ключу за константное время, не зависит от числа свойств), O(n) в худшем при коллизиях (редко). Аналогично Map.set и Set.add. Перебор свойств — O(n). Поэтому объекты/Map идеальны для быстрого добавления и доступа по ключу.

Другие вопросы раздела