簡體   English   中英

如何將 Map 轉換為 object 的數組?

[英]How to convert Map to array of object?

我正在嘗試將 Map 轉換為 object 的數組

假設我有以下 map:

let myMap = new Map().set('a', 1).set('b', 2);

我想將上面的 map 轉換為以下內容:

[
   {
      "name": "a",
      "value": "1",
   },
   {
      "name": "b",
      "value": "2",
   }
]

您可以使用Array.from並映射鍵/值對。

 let map = new Map().set('a', 1).set('b', 2), array = Array.from(map, ([name, value]) => ({ name, value })); console.log(array); 

使用Spread語法Array.map()

 let myMap = new Map().set('a', 1).set('b', 2); const arr = [...myMap].map(([name, value]) => ({ name, value })); console.log(arr); 

您還可以使用任何兼容的迭代方法簡單地迭代Map對象,並將每個項目作為對象添加到結果數組中。

例如,您可以通過以下方式使用Map.prototype.forEach()

const myMap = new Map().set('a', 1).set('b', 2);
const arr = [];

myMap.forEach((value, name) => arr.push({ name, value }));

console.log(arr);

或者,作為替代方案,您可以像這樣使用for...of循環:

const myMap = new Map().set('a', 1).set('b', 2);
const arr = [];

for (const [name, value] of myMap) {
    arr.push({ name, value });
}

console.log(arr);

寫了一篇博客文章,為那些有興趣了解更多信息的人解釋了不同的方法。

很簡單,我將分步驟解釋:

  1. 將 map 散布到 arrays 的數組中。
const map = new Map().set('a', 1).set('b', 2).set('c', 3)
const mapArr = [...map] // array of arrays
  1. Map 每個子數組作為key - value對。 map function 返回一個包含objectkey value的新數組。
const arr = mapArr.map(([key, value]) => ({key, value}))

** 請記住:** 我們用於映射數據的名稱將是在本例中映射的 object keyvalue的名稱。

一個班輪:

 const map = new Map().set('a', 1).set('b', 2).set('c', 3) const arr = [...map ].map(([key, value]) => ({key, value})) console.log({arr})

像這樣傳播ES6:

 let myMap = new Map().set('a', 1).set('b', 2); const result = Array.from(myMap).map(([name, value]) => ({name, value})) console.log(result); 

僅使用 ES6 Spread語法:

const myMap = new Map().set('a', 1).set('b', 2);
const arr = [...myMap];
console.log(arr);

暫無
暫無

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

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