javascript - 我怎么能把 Map() 变成一个字符串,而不是它成为 js/ts 中的 json 对象
问题描述
基本上我想把一个地图变成一个字符串作为文本。我已经尝试过toString()
模板文字,但那些显然返回 [object Map]。我还看到有些人将 Map 转换为对象然后调用JSON.stringify()
它。
但是我不希望我的地图显示为 JSON 对象,而是显示为实际的地图
假设我有一张地图
{ 'key' => 'value' }
我希望它像上面那样显示,而不是像下面那样显示
{
"key": "value"
}
我有什么办法可以做到这一点?
更新:经过一些试验,我终于找到了一个足够好的方法
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}'
}
地图的值是对象,所以我不介意将它们转换为 JSON。
解决方案
您必须创建自己的函数,可能类似于:
function displayMapsWithCustomFormat(m: Map) {
let asStrings = m.map((key, value) => `"${key}" => "${value}"`);
console.log("{\n" + asStrings.join(",\n") + "}");
}
没有测试,但你可以试一试。如果你特别喜欢其他类型,你可以稍微复杂一点。就像你有嵌套地图一样,让这个函数递归。
推荐阅读
- javascript - 当 cookie 为空或不存在时打开 html 或 url
- java - 如何使用 Collectors.groupingBy 而不是分组元素列表获取同一组中元素的某些属性的总和?
- mysql - MySql POWER() 大指数 - DOUBLE 值超出范围
- visual-studio-code - VSCode API:是否可以更改(缩写)显示的文本?
- c# - 在输入值更改时更新中继器
- node.js - 后端节点请求在 localhost 上工作,但在 Heroku 部署中不工作
- ruby-on-rails - Rails 5 项目中不允许的参数
- c++ - 为什么我不能在函数声明中将全局变量作为参数传递
- julia - Julia:是否可以将`fn(df, @macro1 :a, :b, :c)` 转换为`fn(df, (:a, :b, :c)...)`
- regex - 使用模式匹配从正则表达式中提取 Int 而不提取为 String 然后强制转换为 toInt