如何在 javascript ES6 中将 Map 作为对象获取?
How to get Map as an object in javascript ES6?
我的 Class 使用 es6 在节点级别创建地图对象,
使用 Map()--"set" function.When class 被调用 我希望地图对象转换为正常的 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
}
现在 JavaScript 有 Object.fromEntries
(在 ES2019 中添加,很容易填充),这是一个单行代码:
const obj = Object.fromEntries(map);
实例:
const map = new Map();
map.set("string1", true);
map.set("someArray", [{a:1}, {b:2}, {c:3}]);
map.set("string2", 100);
const obj = Object.fromEntries(map);
console.log(obj);
.as-console-wrapper {
max-height: 100% !important;
}
上一个答案:如果你有一个 Map
并且你想将它转换为普通对象,那很容易做到 if Map
的键是字符串或符号或可以有意义地转换为字符串的东西(例如数字)。
你只需遍历它的键:
const obj = {};
for (const key of map.keys()) {
obj[key] = map.get(key);
}
实例:
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;
}
也就是说,作为 ,使用 entries
可能更有意义(而且您不需要 .entries()
,您可以只使用 of map
获取用于条目的默认迭代器)。
将地图转换为对象的更好方法
let jsonResponse = {};
for(let [key,val] of MapObject.entries()){
jsonResponse[key]= val;
}
console.log(jsonResponse);
将 Map 转换为普通对象的一行代码:
Object.assign({}, ...[...m.entries()].map(([k, v]) => ({[k]: v})))
尝试这个非常简单的方法可能会轻松解决您的问题。
resp.send(JSON.stringify(MapObject));
您可以使用原生 JS 函数轻松地将地图转换为对象:
Object.fromEntries(map);
注意:此函数是 ECMAScript 10 规范的一部分,受 Node.js 12+ 和 Chrome 73+ 支持,也可以使用此 [=12 填充以在旧平台上工作=]
const map = new Map();
// Setting up some sample data
map.set("foo", "bar");
map.set("pets", ["Fido", "Foobar", "Al"]);
// Convert map to object
const convertedMap = Object.fromEntries(map);
console.log(convertedMap);
我的 Class 使用 es6 在节点级别创建地图对象, 使用 Map()--"set" function.When class 被调用 我希望地图对象转换为正常的 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
}
现在 JavaScript 有 Object.fromEntries
(在 ES2019 中添加,很容易填充),这是一个单行代码:
const obj = Object.fromEntries(map);
实例:
const map = new Map();
map.set("string1", true);
map.set("someArray", [{a:1}, {b:2}, {c:3}]);
map.set("string2", 100);
const obj = Object.fromEntries(map);
console.log(obj);
.as-console-wrapper {
max-height: 100% !important;
}
上一个答案:如果你有一个 Map
并且你想将它转换为普通对象,那很容易做到 if Map
的键是字符串或符号或可以有意义地转换为字符串的东西(例如数字)。
你只需遍历它的键:
const obj = {};
for (const key of map.keys()) {
obj[key] = map.get(key);
}
实例:
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;
}
也就是说,作为 entries
可能更有意义(而且您不需要 .entries()
,您可以只使用 of map
获取用于条目的默认迭代器)。
将地图转换为对象的更好方法
let jsonResponse = {};
for(let [key,val] of MapObject.entries()){
jsonResponse[key]= val;
}
console.log(jsonResponse);
将 Map 转换为普通对象的一行代码:
Object.assign({}, ...[...m.entries()].map(([k, v]) => ({[k]: v})))
尝试这个非常简单的方法可能会轻松解决您的问题。
resp.send(JSON.stringify(MapObject));
您可以使用原生 JS 函数轻松地将地图转换为对象:
Object.fromEntries(map);
注意:此函数是 ECMAScript 10 规范的一部分,受 Node.js 12+ 和 Chrome 73+ 支持,也可以使用此 [=12 填充以在旧平台上工作=]
const map = new Map();
// Setting up some sample data
map.set("foo", "bar");
map.set("pets", ["Fido", "Foobar", "Al"]);
// Convert map to object
const convertedMap = Object.fromEntries(map);
console.log(convertedMap);