【发布时间】:2015-05-19 01:28:33
【问题描述】:
我想开始使用 ES6 Map 而不是 JS 对象,但我被阻止了,因为我不知道如何使用 JSON.stringify() 和 Map。我的键保证是字符串,我的值将始终被列出。我真的要写一个包装方法来序列化吗?
【问题讨论】:
-
关于2ality.com/2015/08/es6-map-json.html主题的有趣文章
-
我能够让它工作。结果在 Plunkr 上embed.plnkr.co/oNlQQBDyJUiIQlgWUPVP。该解决方案使用 JSON.stringify(obj, replacerFunction) 检查是否正在传递 Map 对象并将 Map 对象转换为 Javascript 对象(即 JSON.stringify)然后将转换为字符串。
-
如果你的键被保证是字符串(或数字)并且你的值是arrays,你可以做类似
[...someMap.entries()].join(';');对于更复杂的事情,你可以尝试类似的事情,比如[...someMap.entries()].reduce((acc, cur) => acc + `${cur[0]}:${/* do something to stringify cur[1] */ }`, '') -
@Oriol 如果键名可能与默认属性相同怎么办?
obj[key]可能会给你带来意想不到的东西。考虑案例if (!obj[key]) obj[key] = newList; else obj[key].mergeWith(newList);。
标签: javascript json dictionary ecmascript-6