Подтвердить что ты не робот

Как объект Javascript Map улучшит наше кодирование?

Если мы можем сделать пары ключ/значение с объектами javascript, то что, возможно, следует использовать для нового объекта Map() ES6?

Когда я должен использовать один и другой? Является ли карта ограниченной значениями или может содержать функции?

4b9b3361

Ответ 1

  • Все, что можно использовать в качестве ключа на карте.
  • Карты упорядочены, и это позволяет выполнять итерацию.

Объединяя 1 и 2, когда вы перебираете карту, вы получите полезный массив пар ключ-значение!

Ознакомьтесь с map.prototype.forEach() documentation.

Источник: Еще один хороший вопрос/ответ обмен. Стоит отметить это как дубликат.

Update: Добавляя к этому ответу прямо вопрос:
Вы должны использовать карту, когда вам нужно связать вещи или сохранить порядок вставки (для этого нужны общие структуры данных).

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

Обновление 2: ОП спросил, функционируют ли функции. Да, потому что значения тоже могут быть функциями! Проверьте это:

let x = new Map();
let y = () => {
  console.log('derp');
}
x.set(y, "HI");
console.log(x.get(y)); //will log "HI"

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

Кроме того, основные отличия между Map и Object, от MDN под заголовком Объекты и сопоставленные карты ":

  • Объект имеет прототип, поэтому на карте есть ключи по умолчанию. Однако это можно обойти, используя map = Object.create(null).
  • Ключами объекта являются строки, где они могут быть любым значением для Карты.
  • Вы можете легко получить размер карты, когда вам нужно вручную отслеживать размер объекта.

Опять же, ключи могут быть любым значением!

Ответ 2

  • Карты упорядочены.
  • Ключи карты не обязательно должны быть строками