Инициализация карты в машинописном тексте [дубликат]

Aug 17 2020

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

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

Ответы

1 MauriceNino Aug 17 2020 at 14:35

Он инициализирован правильно, но при его печати не печатаются все значения в виде массива. Но вы можете проверить это, просто обратившись к ключам - они существуют:

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]);

JessevanAssen Aug 17 2020 at 14:35

Это потому, JSON.stringifyчто не знает, как преобразовать карту в строку, поэтому вместо этого она попытается преобразовать в строку базовый объект, что приведет к пустому объекту.

Попробуйте console.log(JSON.stringify([...a.entries()]));вместо этого

NiettheDarkAbsol Aug 17 2020 at 14:35

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

Вместо этого сначала преобразуйте его в массив:

console.log(JSON.stringify([...map]));
LionelFoxcroft Aug 17 2020 at 14:39

Когда вы используете JSON.stringify () на карте, он всегда дает вам {}. Если машинописный текст говорит, что вы все делаете правильно, карта, вероятно, была инициализирована правильно.