1. ホーム
  2. javascript

[解決済み] ES6 Map を localstorage (または他の場所) に永続化するには?

2023-07-01 14:03:55

質問

var a = new Map([[ 'a', 1 ]]);
a.get('a') // 1

var forStorageSomewhere = JSON.stringify(a);
// Store, in my case, in localStorage.

// Later:
var a = JSON.parse(forStorageSomewhere);
a.get('a') // TypeError: undefined is not a function

残念なことに JSON.stringify(a); は単に '{}' を返すだけで、リストアすると空のオブジェクトになることを意味します。

私が見つけたのは es6-mapify を見つけたので、それは1つの解決策かもしれませんが、私は、単に私のマップを永続化するために外部依存に頼る必要があることを期待していました。

どのように解決するのですか?

キーと値の両方がシリアライズ可能であると仮定します。

localStorage.myMap = JSON.stringify(Array.from(map.entries()));

は動作するはずです。逆の場合は

map = new Map(JSON.parse(localStorage.myMap));