ES6 / Harmony为地图和集合引入了新的数据类型。无论如何将JSON加载到这些类型而不是默认的Object和Array?
答案 0 :(得分:3)
Set与Array的含义不同。集合是唯一项目的集合,而数组是不一定唯一的有序项目集合。
要将JSON加载到地图而不是关联数组中,请查看JSON.parse。您可以编写自定义解析器,如下所示:
JSON.parse(json, (k, v) => {
if(typeof v == 'object' && !(v instanceof Array))
return new Map(Object.entries(v));
return v;
});
Map
采用键值对的迭代器,因此我们需要首先通过Object.entries
传递值。 Object.entries
是一个计划中的功能,尚未通过它的外观最终确定。这是一个实现:
Object.entries = function* entries(obj) {
for (let key of Object.keys(obj)) {
yield [key, obj[key]];
}
}
(他们可能会决定Object.prototype.entries
,在这种情况下,代码看起来会略有不同。)
答案 1 :(得分:0)
我不完全确定“将JSON加载到这些类型中”是什么意思。我假设将其对象文字解析为地图,将数组文字解析为集合?
无论如何,答案是否定的。 JSON不会随ES6而改变,标准JSON对象的API也不会改变。但是,您当然可以很容易地将JSON.parse的结果转换为基于地图的表示。