Inisialisasi peta dalam skrip ketikan [duplikat]
Saya mencoba untuk menginisialisasi di bawah Peta di skrip ketikan. Saat saya cetak, sepertinya kosong.
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
Jawaban
Ini diinisialisasi dengan benar, tetapi mencetaknya tidak mencetak semua nilai seperti array. Tetapi Anda dapat memeriksanya dengan hanya mengakses kunci - kunci tersebut ada:
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"'));
Juga relevan: Bagaimana cara menampilkan objek peta ES6 javascript di konsol?
Seperti yang dinyatakan di sana, Anda bisa menyebarkan peta dan mencetaknya:
let map = new Map([
[
"api/service/method",
{
uriPath: {}
}
],
[
"\"type\": \"html\"",
{
body: {}
}
]
]);
console.log([...map]);
Itu karena JSON.stringify
tidak tahu cara merangkai Peta, jadi ia akan mencoba merangkai objek yang mendasarinya, yang menghasilkan objek kosong.
Coba console.log(JSON.stringify([...a.entries()]));
saja
Merangkai objek melibatkan merangkai propertinya, tetapi a Map
tidak menggunakan properti untuk menyimpan datanya. Jadi Anda mendapatkan objek kosong jika Anda merangkainya secara naif.
Sebagai gantinya, konversikan ke array terlebih dahulu:
console.log(JSON.stringify([...map]));
Saat Anda menggunakan JSON.stringify () pada peta, itu akan selalu memberi Anda {}. Jika ketikan mengatakan Anda melakukannya dengan benar, peta mungkin diinisialisasi dengan benar.