Инициализация карты в машинописном тексте [дубликат]
Я пытаюсь инициализировать карту ниже в машинописном тексте. Когда я его распечатываю, он кажется пустым.
let map: Map<string, object> = new Map<string, object> ([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(JSON.stringify(map));
// printing {}
// but not the initialized values
Ответы
Он инициализирован правильно, но при его печати не печатаются все значения в виде массива. Но вы можете проверить это, просто обратившись к ключам - они существуют:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log(map);
console.log(map.get('api/service/method'));
console.log(map.get('"type": "html"'));
Также актуально: как я могу отобразить объект карты javascript ES6 в консоли?
Как указано там, вы можете просто развернуть карту и распечатать это:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
Это потому, JSON.stringify
что не знает, как преобразовать карту в строку, поэтому вместо этого она попытается преобразовать в строку базовый объект, что приведет к пустому объекту.
Попробуйте console.log(JSON.stringify([...a.entries()]));
вместо этого
Привязка объекта к строковой форме включает в себя указание его свойств, но Map
не использует свойства для сохранения данных. Таким образом, вы получаете пустой объект, если наивно структурируете его.
Вместо этого сначала преобразуйте его в массив:
console.log(JSON.stringify([...map]));
Когда вы используете JSON.stringify () на карте, он всегда дает вам {}. Если машинописный текст говорит, что вы все делаете правильно, карта, вероятно, была инициализирована правильно.