2017-04-05 256 views
0

我需要将一个Map传递给需要一个对象的代码。如何从如何将Javascript Map转换为Object?

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

{a: 1, b: 2} 

+1

'为(m个变种[键,值])OBJ [键] =值;' –

+1

是对输入'Map'在你的控制下的对象?如果是这样,你是否这样使用它,或者你可以只使用一个对象?如果不是,你如何保证键是可接受的对象键(字符串/符号)而不是任意的数据类型?这里 –

+0

答案看起来像它是最令人费解的或最模糊的解决方案竞争... –

回答

3

你不需要链地图数组转换和许多函数调用,您可以使用一个简单的循环:

var obj = {}; 
for (var [key, value] of m) obj[key] = value; 

要小心,密钥将被转换在那个过程中如果他们还不是已经存在的话。

1

你可以反过来说,Map到阵列使用spread syntax,然后添加到对象。

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

 
var obj = {} 
 
var arr = [...map] 
 
arr.forEach(e => obj[e[0]] = e[1]); 
 

 
console.log(obj)

2

你可以使用Object.assign和地图项目作为新对象。

var map = new Map([["a", 1], ["b", 2]]), 
 
    object = Object.assign({}, ...[...map].map(([k, v]) => ({ [k]: v }))); 
 

 

 
console.log(object);

2

可以使用Map.prototype.forEach这样的:

let map = new Map([["a", 1], ["b", 2]]), 
 
    res = {}; 
 

 
map.forEach((value, key) => res[key] = value); 
 

 
console.log(res);

相关问题