Если мы можем сделать пары ключ/значение с объектами javascript, то что, возможно, следует использовать для нового объекта Map() ES6?
Когда я должен использовать один и другой? Является ли карта ограниченной значениями или может содержать функции?
Если мы можем сделать пары ключ/значение с объектами javascript, то что, возможно, следует использовать для нового объекта Map() ES6?
Когда я должен использовать один и другой? Является ли карта ограниченной значениями или может содержать функции?
Объединяя 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 под заголовком Объекты и сопоставленные карты ":
Опять же, ключи могут быть любым значением!