Inizializzazione della mappa in dattiloscritto [duplicato]
Sto cercando di inizializzare sotto Map in dattiloscritto. Quando lo stampo, sembra essere vuoto.
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
Risposte
È inizializzato correttamente, ma stampandolo non vengono stampati tutti i valori come un array. Ma puoi verificarlo semplicemente accedendo alle chiavi: esistono:
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"'));
Anche rilevante: come posso visualizzare un oggetto mappa ES6 javascript nella console?
Come affermato lì puoi semplicemente diffondere la mappa e stamparla:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
Questo perché JSON.stringify
non sa come stringere una mappa, quindi proverà invece a stringere l'oggetto sottostante, il che si traduce in un oggetto vuoto.
Prova console.log(JSON.stringify([...a.entries()]));
invece
La stringa di un oggetto implica la stringa delle sue proprietà, ma a Map
non usa le proprietà per salvare i suoi dati. Quindi ottieni un oggetto vuoto se lo stringa ingenuamente.
Invece convertilo prima in un array:
console.log(JSON.stringify([...map]));
Quando usi JSON.stringify () su una mappa, ti darà sempre {}. Se il dattiloscritto dice che lo stai facendo bene, la mappa è stata probabilmente inizializzata correttamente.