4

ES6/Harmony 为 Maps 和 Sets 引入了新的数据类型。无论如何将 JSON 加载到这些类型中,而不是默认的 Object 和 Array 中?

4

2 回答 2

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.entriesObject.entries是一项计划中的功能,从外观上看尚未最终确定。这是一个实现:

Object.entries = function* entries(obj) {
   for (let key of Object.keys(obj)) {
     yield [key, obj[key]];
   }
}

(他们可能会决定Object.prototype.entries在哪种情况下代码看起来会略有不同。)

于 2014-04-16T10:08:22.990 回答
0

我不完全确定“将 JSON 加载到这些类型中”是什么意思。我假设将其对象文字解析为映射和数组文字作为集合?

无论如何,答案是否定的。JSON 不会随着 ES6 改变,标准 JSON 对象的 API 也不会改变。但是,您当然可以很容易地自己将 JSON.parse 的结果转换为基于地图的表示。

于 2014-03-01T06:19:19.253 回答