Как инициализировать карту в ES6/ES2015, аналогичную выражению Object?

Что эквивалентно

var object = {
  'foo': 'bar',
  1: 42
}

с помощью ES6 Map?

Ответы

Ответ 1

Ближе всего вы можете получить:

let object = new Map([
  ['foo', 'bar'],
  ['1', 42]
]);

Важно отметить:

  • Свойства объекта идентифицируются по строкам, а ключи Карты могут быть любым значением, поэтому убедитесь, что все ключи являются строками во входном массиве.
  • Итерация объекта Map дает записи по порядку вставки. Это не гарантируется для объектов, поэтому поведение может отличаться.

Ответ 2

В современных браузерах это может быть просто:

new Map(Object.entries(object))