我的类使用es6在节点级创建一个地图对象,使用Map() - “set”函数。当调用类时,我希望地图对象转换为普通的json类型结构。我正在使用moongoose从数据库中检索数据。
res.json(MapObject);
使用此res.json后,父节点内的整个内容变空。
{success:{},
error:{},
redirectMe:false}
像这样有地图对象
{
success:
Map {
'String1' => 'true',
'Object1' => [ [Object],
[Object],
[Object],
[Object],
[Object]
]
'String2' => 100
}
error: Map {},
redirectMe: false
}
我想把结果作为一个对象但是当我试图让它无法获得任何东西时
想要的东西
{
success:
{
'String1' : 'true',
'Object1' : [ [Object],
[Object],
[Object],
[Object],
[Object]
]
'String2' : 100
}
error: {},
redirectMe: false
}
您可以使用本机JS函数轻松地将地图转换为对象:
Object.fromEntries(map);
注意:此功能是EcmaScript 10规范的一部分,受Node.js 12+和Chrome 73+支持
将地图转换为对象的更好方法
let jsonResponse = {};
for(let [key,val] of MapObject.entries()){
jsonResponse[key]= val;
}
console.log(jsonResponse);
将Map转换为plain对象的单行程:
Object.assign({}, ...[...m.entries()].map(([k, v]) => ({[k]: v})))
如果你有一个Map
并且想要将它转换为普通对象,那么如果Map
的键是字符串或符号或者某些东西(例如数字)可以有意义地转换为字符串,那么这很容易实现。
如果是这样,你只需循环其键:
const map = new Map();
map.set("string1", true);
map.set("someArray", [{a:1}, {b:2}, {c:3}]);
map.set("string2", 100);
const obj = {};
for (const key of map.keys()) {
obj[key] = map.get(key);
}
console.log(obj);
.as-console-wrapper {
max-height: 100% !important;
}
试试这个非常简单可以轻松解决您的问题。
resp.send(JSON.stringify(MapObject));