如何在本地存储(或其他地方)中保存 ES6 映射?

新手上路,请多包涵
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); 只返回 ‘{}‘,这意味着 a 在恢复时变成空对象。

我发现 es6-mapify 允许在 Map 和普通对象之间进行向上/向下转换,因此这可能是一种解决方案,但我希望我需要求助于外部依赖项来简单地保留我的地图。

原文由 Letharion 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 556
2 个回答

假设您的键和值都是可序列化的,

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

应该管用。相反,使用

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

原文由 Bergi 发布,翻译遵循 CC BY-SA 3.0 许可协议

干净如哨子:

 JSON.stringify([...myMap])

原文由 Oded Breiner 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏