Разработчики часто тратят много времени на выбор правильной структуры данных. Выбор правильной структуры данных может упростить работу с данными, сэкономить время и сделать код более полным. Двумя наиболее распространенными структурами данных для хранения коллекций данных являются объекты и массивы. Разработчики используют объекты для хранения пар ключ/значение и массивы для хранения индексированных списков. Однако в ECMAScript 2015 представлены два новых типа итерируемых объектов: наборы и карты; это «коллекции с ключом», что означает, что их поведение немного отличается и дает преимущества в производительности.

Разница между картой и объектом

Есть два основных различия между Map и традиционным объектом в Javascript.

Прямая итерация

Перебирая ключи, значения или записи в обычном объекте, мы должны преобразовать их в массив, использовать такой метод, как Object.keys(), Object.values(), Object.entries или for... в цикле. Объект не является итерируемым напрямую; Цикл for…in может перебирать только перечисляемые свойства объектов, свойства, не являющиеся символами, и делает это в произвольном порядке.

С Map мы непосредственно итерируемы, и порядок итерации такой же, как порядок вставки. Мы можем использовать for…of или forEach для перебора записей Map.

Неограниченные ключи

Ключ объекта Javascript должен быть либо строкой, либо символом.

Что касается карты, мы разрешаем использование других примитивных типов (включая NaN). Это дает разработчикам преимущества, когда речь идет об ассоциации с другими типами данных.

Разница между картой и набором

Набор — это набор данных коллекции, который должен состоять из уникальных значений, где карта — это когда у вас есть пары связанных данных, когда мы сопоставляем ключи со значением. Map и Set имеют похожие методы; к ним относятся .has(), .get(), .delete() и .size().

Разница в том, что Map поставляется с парой ключ/значение, двумя измерениями. Мы можем преобразовать массив в набор, а также 2D-массив в отображение:

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

Я надеюсь, что вы найдете эту статью полезной и получите удовольствие от ее чтения. Спасибо за чтение.