2017-04-05 60 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);

相關問題