4

ES6/Harmony では、マップとセットに新しいデータ型が導入されています。デフォルトの Object と Array の代わりに JSON をこれらの型にロードする方法はありますか?

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.entries最初に値を渡す必要があります。Object.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 に答える