我想开始使用ES6 Map而不是JS对象,但我被阻止了,因为我无法弄清楚如何使用JSON.stringify()一个Map.我的密钥保证是字符串,我的值将始终是列表.我是否真的必须编写一个包装器方法来序列化?
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
Run Code Online (Sandbox Code Playgroud)
不幸的是JSON.stringify(a);简单地返回'{}',这意味着当恢复时它变成一个空对象.
我发现es6-mapify允许在Map和普通对象之间进行向上/向下转换,因此这可能是一个解决方案,但我希望我只需依靠外部依赖来持久保存我的地图.
我有一个简单的例子,将唯一值推送到数组中.它看起来像这样:
this.items = [];
add(item) {
if(this.items.indexOf(item) > -1) {
this.items.push(item);
console.log(this.items);
}
}
Run Code Online (Sandbox Code Playgroud)
看起来挺直截了当,对吧?不,看起来如此.它不会添加任何值.我确信这是我身上某种愚蠢的错误,但我似乎无法找到它.