我正在使用core-js
用于地图集合,因为似乎 ES7 Map
具有地图到JSON功能, ES6 Map
。
(ES6): JSON.stringify(new Map().set('myKey1', 'val123').set('myKey2', 'val456')); => {}
虽然ES 7似乎在键值对中添加了不必要的方括号
Eg (ES7): JSON.stringify(new Map().set('myKey1', 'val123').set('myKey2', 'val456')); => [["myKey1","val123"],["myKey2","val456"]]
当我期待这一点时:
{"myKey1": "val123","myKey2":"val456"}
请帮忙!
修改 我意识到我发布了一个糟糕的JSON,但在编写问题时这只是一个输入错误。
重点是,因为我正在使用TypeScript创建一个新的Map
字符串键值对,如
new Map<string, string>()
我希望这样的Map的JSON输出为{"myKey1": "val123","myKey2":"val456"}
,所以我会询问有关如何获得所需结果的建议。
答案 0 :(得分:3)
这是因为默认的映射迭代器是.entries
,它产生键值对。如果要使用其他迭代器,则必须提供或编程,例如:
function *flatEntries(map) {
for (let [k, v] of map) {
yield k;
yield v;
}
}
let m = new Map().set('myKey1', 'val123').set('myKey2', 'val456');
let s = JSON.stringify([...flatEntries(m)]);
console.log(s)
&#13;