TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.6K subscribers
Post #357 7.43K
В чем отличие map от обычного объекта ?
Спросят с вероятностью 7%

Объекты и Map используются для хранения пар ключ-значение. Однако, у них есть различия, которые могут сделать Map более подходящим для определенных задач по сравнению с обычными объектами. Вот основные отличия:

1️⃣Типы ключей

✅Объекты: Ключами могут быть только строки или символы. Другие типы, такие как числа или объекты, автоматически преобразуются в строки.
    const obj = {};
obj[1] = 'one'; // Ключ преобразуется в строку '1'
console.log(obj['1']); // 'one'

const a = { key: 'a' };
const b = { key: 'b' };
obj[a] = 'value'; // Ключ преобразуется в '[object Object]'
console.log(obj['[object Object]']); // 'value'


✅Map: Ключами могут быть любые значения, включая объекты, функции и примитивы.
    const map = new Map();
map.set(1, 'one');
console.log(map.get(1)); // 'one'

const a = { key: 'a' };
const b = { key: 'b' };
map.set(a, 'valueA');
map.set(b, 'valueB');
console.log(map.get(a)); // 'valueA'
console.log(map.get(b)); // 'valueB'


2️⃣Итерация

✅Объекты: Осуществляется с помощью циклов for...in или методов Object.keys(), Object.values() и Object.entries().
    const obj = { a: 1, b: 2 };
for (const key in obj) {
console.log(key, obj[key]);
}

Object.keys(obj).forEach(key => console.log(key, obj[key]));


✅Map: Имеет встроенные методы для итерации, такие как map.keys(), map.values() и map.entries(). Эти методы возвращают итерируемые объекты.
    const map = new Map([['a', 1], ['b', 2]]);
for (const [key, value] of map) {
console.log(key, value);
}

map.forEach((value, key) => console.log(key, value));


3️⃣Сохранение порядка

✅Объекты: Порядок свойств в объектах не гарантирован, хотя современные реализации JavaScript сохраняют порядок добавления свойств.

✅Map: Порядок добавления пар ключ-значение всегда сохраняется.

4️⃣Производительность

✅Объекты: Использование объектов может быть быстрее для создания и доступа к свойствам, но это зависит от реализации в конкретной среде выполнения.

✅Map: Map оптимизирован для частого добавления и удаления ключей и значений.

5️⃣Методы и свойства

✅Объекты: Не имеют встроенных методов для работы с коллекцией ключей и значений.

✅Map: Предоставляет множество встроенных методов, таких как set, get, has, delete, и свойства, такие как size.
    const map = new Map();
map.set('key', 'value');
console.log(map.has('key')); // true
console.log(map.get('key')); // 'value'
map.delete('key');
console.log(map.size); // 0


6️⃣Прототипное наследование

✅Объекты: Имеют цепочку прототипов, которая может приводить к коллизиям имен свойств с прототипами.
    const obj = { a: 1 };
console.log(obj.toString); // [Function: toString] - свойство унаследовано от Object.prototype


✅Map: В Map нет такой проблемы, так как он не использует цепочку прототипов для хранения данных.
    const map = new Map();
map.set('a', 1);
console.log(map.toString); // [Function: toString] - метод самого Map, а не его данных


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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
  • 👍 30
  • ❤ 6
  • 🔥 3
More from @easy_javascript_ru
  1. Oct 16, 2026🤔 Что такое meta теги? Meta-теги – это специальные HTML-теги, которые содержат метаинформ…
  2. Oct 15, 2026Post #3044
  3. Oct 15, 2026🤔 Какие преимущества у di? Dependency Injection (DI) – это паттерн проектирования, которы…
  4. Oct 14, 2026🤔 Зачем создавались библиотеки react и другие? Библиотеки, такие как React, создавались д…
  5. Oct 13, 2026🤔 Что такое репозиторий? Это хранилище кода, файлов и их истории изменений. Используется…
  6. Oct 13, 2026🤔 Как мы можем замерить скорость работы участка кода с date.Now? В JavaScript можно замер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →