JavaScript 中 Map 与 JSON 转换的坑 |
您所在的位置:网站首页 › js创建map转成string › JavaScript 中 Map 与 JSON 转换的坑 |
用js的Map的时候发现了里面的一个小坑(也许是Java的惯性思维),在将Map转成字符串的时候会以数组字面量的形式保存。 先构造一个Map,如下 const map = new Map(); map.set(1, 1); map.set(2, 2); console.log(map);结果如图: Paste_Image.png好的,没问题,当做如下转换: console.log(JSON.parse(JSON.stringify(map)));结果意外发生了 Paste_Image.png 这个Map变成了一个二维数组,(key对应下标0,value对应下标1)。 那么如何还原为Map呢? 1.遍历这是一种比较笨的方式,代码如下: const map = new Map(); let jsonStr = '[[1,1],[2,2]]'; let values = JSON.parse(jsonStr); for (let i in values) { map.set(values[i][0], values[i][1]);//注意这里取的是下标0和1 } console.log(map); 2.构造器翻看es6手册发现其构造函数可以接受一个二维数组作为参数,该数组的成员是表示键值对的数组,这正是我们想要的方式。因此,可以这样去构造Map: let jsonStr = '[[1,1],[2,2]]'; const map = new Map(JSON.parse(jsonStr)); console.log(map);输出结果如下: Paste_Image.png两种方式都可以得到我们想要的结果。 参考文档:阮一峰 ECMAScript 6 入门; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |