簡體   English   中英

JavaScript es 6 將 Map 轉換為 json object 數組

[英]JavaScript es 6 convert Map to json object array

我有一個 Map,其鍵和值為 json object,例如

var myMap = new Map();

myMap.set('1', "mike");
myMap.set('2', "tom");

How could I turn it into an object array by re-construct the object schema (due to api requested) with value and fullame maps to the key and value in above Map like

[{value : 1, fullName: "mike"},{value : 2, fullName: "tom"},...]

我試過使用

Array.from(myMap).map(arr => ({ value: arr[0], fullName: arr[1] }));

(注意, Array.from(myMap)會給你像數組數組一樣的結果,沒有辦法正常使用屬性名解構

[[1, "tom", 28],[2, "mike", 30],...]

因為它將首先轉換為嵌套的 object 數組,所以我必須通過 map 的索引找到 id 和名稱,例如arr[0]給我value ,而arr[1]給我fullName ...

還有其他更好的方法嗎? 在這里也歡迎使用 Lodash 提出建議!

還有其他更好的方法嗎?

您可以使用Array.from的第二個參數而不是map ,並且可以對元組參數使用參數解構:

Array.from(myMap, ([value, fullName]) => ({ value, fullName }));

但是不,沒有辦法手動構造具有自定義屬性名稱valuefullName的對象數組。

如果您想忽略 id 鍵並僅獲取值,請使用

Array.from(myMap.values())

默認迭代器會產生兩者的元組。

我試過Array.from(myMap).map(arr => ({ value: arr[0], name: arr[1] })); 但這將轉換為嵌套的 object

看來您只是缺少對條目元組的值部分的.name屬性訪問,僅獲取名稱字符串而不是整個 object:

Array.from(myMap).map(arr => ({ value: arr[0], name: arr[1].name }));
//                                                         ^^^^^

您可以通過使用參數解構語法來簡化它

Array.from(myMap).map(([value, {name}]) => ({ value, name }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM