我需要将Map传递给一些需要对象的代码。我怎么去
new Map([["a", 1], ["b", 2]])
到
{a: 1, b: 2}
答案 0 :(得分:5)
您不需要将映射链接到数组转换和许多函数调用,您可以使用简单的循环:
var obj = {};
for (var [key, value] of m) obj[key] = value;
请注意,如果密钥已经不存在,那么密钥将在该流程中转换为字符串。
答案 1 :(得分:2)
您可以使用Object.assign
并将项目映射为新对象。
var map = new Map([["a", 1], ["b", 2]]),
object = Object.assign({}, ...[...map].map(([k, v]) => ({ [k]: v })));
console.log(object);
答案 2 :(得分:2)
您可以像这样使用Map.prototype.forEach
:
let map = new Map([["a", 1], ["b", 2]]),
res = {};
map.forEach((value, key) => res[key] = value);
console.log(res);
答案 3 :(得分:1)
您可以使用read()
将Map
转换为数组,然后添加到对象。
spread syntax

答案 4 :(得分:1)
Object.fromEntries()
已包含在ECMAScript 2019中,因此它将很快在所有主流浏览器中实现。
在撰写本文时(2019年4月11日),Chrome 73和Firefox 63已经实现了该功能,BabelJs 7.4也已实现
const myMap = new Map([["a", 1], ["b", 2]]);
const myObj = Object.fromEntries(myMap);
console.log(myObj);