如何将Javascript地图转换为对象?

时间:2017-04-05 13:55:31

标签: javascript ecmascript-6

我需要将Map传递给一些需要对象的代码。我怎么去

new Map([["a", 1], ["b", 2]])

{a: 1, b: 2}

5 个答案:

答案 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);