Анализ большого количества различных методов массивов и объектов

Важно понимать, как работают объекты и массивы через призму Big O, поскольку это должно влиять на выбор, который вы делаете при структурировании данных в своих приложениях.

Наряду с этим так же полезно знать, когда следует использовать объект, а когда следует использовать массив.

Объекты

Когда использовать предметы

  • Когда тебе не нужен заказ
  • Когда нужен быстрый доступ / установка и удаление

Большое количество объектов

  • Вставка: O (1)
  • Удаление: O (1)
  • Поиск: O (N)
  • Доступ: O (1)

Поиск выполняется за O (N), потому что здесь мы ищем значение в объекте, а не ищем ключ. Итак, чтобы найти значение, мы должны проверить каждое значение в объекте.

Большой выбор объектных методов

  • Object.keys: O (N)
  • Объект.значения: O (N)
  • Object.entries: O (N)
  • hasOwnProperty: O (1)

Массивы

Когда использовать массивы

  • Когда нам нужен порядок
  • Когда нужен быстрый доступ / вставка и (иногда) удаление

Большой O массивов

  • Прошивка - смотря как
  • Удаление - смотря как
  • Поиск: O (N)
  • Доступ: O (1)

Почему вставка различается?

Поскольку вставка в конец массива (с array.push) равна O (1). Однако, если мы хотим вставить в начало массива (с array.unshift), это O (N), так как мы должны перемещать каждую запись вверх на единицу.

Почему удаление различается?

Поскольку удаление с конца массива (с array.pop) равно O (1). Однако, если мы хотим удалить из начала массива (с помощью array.shift), это будет O (N), так как мы должны перемещать каждую запись вниз на одну.

Большое число методов массива

  • Толкать: O (1)
  • Поп: O (1)
  • Сдвиг: O (N)
  • Снятие переключения передач: O (N)
  • Конкат: O (N)
  • Срез: O (N)
  • Соединение: O (N)
  • Сортировка: O (N * log N)
  • forEach: O (N)
  • Карта / Фильтр / Уменьшение: O (N)

Заключение

Надеюсь, эта короткая статья дала вам приблизительное руководство относительно того, насколько эффективны методы Array и Object, а также когда имеет смысл использовать одну структуру данных над другой. Определенно есть еще несколько вещей, которые следует учитывать, но размышления над некоторыми из затронутых здесь вопросов помогут вам как разработчику программного обеспечения принимать более обоснованные решения.

Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на мой канал YouTube!