JS/TS中如何将Map按原生格式转为字符串而非JSON对象
Map转原生格式字符串实现方法
我们在需要将Map转为文本字符串时,直接调用toString()或者使用模板字面量都会得到[object Map]的结果,不符合预期。常见的替代方案是先把Map转为普通对象再用JSON.stringify()处理,但这种方法输出的是普通JSON对象格式,无法保留Map原生的key => value格式。
比如我们期望输出的Map格式为:
{ 'key' => 'value' }
而不是如下JSON格式:
{ "key": "value" }
可行实现方案
如果可以接受Map的值部分转为JSON格式(比如值本身都是对象的场景),可以使用如下转换函数:
const convertMapToString = (m: Map<string, IGuildCache | object>) => { let mapEntries = [...m.keys()] return '{\n' + mapEntries.map(k => { return ' ' + k + ' => ' + JSON.stringify(m.get(k), null, 2) }).join(',\n') + '\n}' }
内容的提问来源于stack exchange,提问作者Fad F
相关产品推荐
相关产品推荐

