В одной из предыдущих статей нашего сайта мы рассказывали о том, какие основные структуры данных бывают, какими особенностями они обладают. Был представлен общий список структур данных, куда вошли как сложные, так и более простые. Все это теория, которую следует знать. Но более интересен вопрос практического применения той либо иной структуры данных в контексте программирования на JavaScript, то есть при разработке программного обеспечения. Мы уже рассказывали про массивы. Предмет сегодняшнего разговора — объекты.

Объекты

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

Вот как может выглядеть обычный объект на языке программирования JavaScript:

Объект как структура данных в JS

У нас есть возможность получить практически любое свойство по его имени, так как имя представляет собой уникальный идентификатор. Такая операция будет мгновенной.

Объект как структура данных в JS

Таким же образом мы можем перезаписать свойства либо даже выполнить создание и запись нового.

Объект как структура данных в JS

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

Объект как структура данных в JS

Сложность таких методов — О(n), то есть нужно пройтись по всем значениям, создавая из них массив.

Так как любое свойство объекта является его уникальным идентификатором, по ID разработчик может мгновенно получать, удалять, записывать и обновлять информацию. В результате объекты нередко применяются во вспомогательном качестве при выполнении оптимизаций через маппинг. Маппинг предоставляет методы для всех вышеописанных манипуляций, имитируя Map. К примеру, мы можем:

  • проверить, существует ли запись (has), а не сравнивать с undefined;
  • получить по ключу (get), записать (set);
  • использовать forEach непосредственно сразу к map, выполняя итерацию на месте и по связкам (ключ, значение);
  • и так далее.

Как же это все будет выглядеть на практике? Давайте вспомним очень популярную на собеседованиях задачу — посчитать число уникальных символов в строке. Решение такой задачи будет тривиальным, плюс будет работать с любыми символами:

Объект как структура данных в JS

Результат вызова — карта по уникальным символам и их числу:

Объект как структура данных в JS

Таким образом мы сформировали карту, заполнив ее символами из строки, причем каждый символ является уникальным идентификатором. Этим способом мы могли, что называется, мгновенно проверить наличие символа в карте, получить значение, а потом перезаписать его. И все это работало бы для любого символа и любого языка, включая специальные символы и даже пробелы. То есть идея маппинга в том и заключается, чтобы создать вспомогательную структуру данных для определенных операций при алгоритмической сложности О(1).

Список структур данных

Напоследок давайте освежим в памяти основные структуры данных:

  1. Массивы. Наиболее популярный способ структуризации. У каждого элемента есть индекс, соответствующий положению этого элемента в массиве.
  2. Очереди. Вспоминаем очередь на кассу и принцип FIFO — First In, First Out.
  3. Стеки. Вспоминаем стопку книг или других предметов и принцип LIFO — Last In, First Out.
  4. Деревья. Иерархические структуры данных, состоящие из вершин и ребер.
  5. Связные списки. Цепочки узлов, каждый из которых содержит информацию и указатель на следующий узел в этой цепочке.
  6. Графы. Похожи на деревья, но более сложны. Не вдаваясь в подробности, скажем, что дерево является ограниченной формой графа.
  7. Боры. Префиксные деревья с древовидной структурой данных, показывающие высокую эффективность при решении задач на строки.
  8. Хэш-таблицы. Эта структура данных реализует интерфейс ассоциативного массива и хранит пары «ключ-значение».

Помните, что общие знания структур данных помогут не только на собеседовании, но и могут быть полезными при создании программного обеспечения, т. к. при правильном использовании структуризации вы сможете не только успешно выполнять сложные задачи, но и оптимизировать свой код.  

Также на нашем сайте вам могут быть интересны следующие тематические статьи:

— «Структуры и типы данных»;

— «Понятие структуры данных для программиста. Массивы»;

— «Топ-8 структур данных для программиста»;

— «Дерево как структура данных. Двоичные деревья».

Предмет следующего разговора — сортировки и их применение в контексте программирования. Следите за обновлениями блога!

Объект как структура данных в JS

По материалам сайта: https://dou.ua/lenta/articles/what-you-should-know-about-algorithms/.