簡體   English   中英

將es6映射的內容轉換為JSON數組

[英]Convert es6 map's content to an array of JSON

我有這樣設置的地圖

const directory = new Map()
.set('John', { age:25, gender: 'M'} )
.set('Mary', { age:51, gender: 'M'} ) 
.set('Sam', { age:15, gender: 'M', id: 322 } )
.set('Jane', { age:15, gender: 'M', paid: true } );

我希望將其轉換為具有新屬性“ name”的json數組,以用於地圖中的每個鍵:

[
  { "name": "John", "age":25, "gender": "M" },
  { "name": "Mary", "age":51, "gender": "F" },  
  { "name": "Sam", "age":15, "gender": "M", "id": 322 },  
  { "name": "Jane", "age":19, "gender": "F", "paid": true }
]

我嘗試了JSON.stringify([... directory])和其他很多東西,但是不確定是否有將密鑰作為json的一部分的有效方法。

由於您已經使用了spread屬性來分解地圖,因此您只需要將該2d數組映射到對象數組即可,這可以通過數組解構輕松實現:

 [...directory].map(([name,obj]) => ({name,...obj}));

或不帶ESnext:

[...directory].map(([name,obj]) => Object.assign({name},obj));

試試吧

您可以使用Array.from並構建所需的對象。

 const directory = new Map() .set('John', { age: 25, gender: 'M' }) .set('Mary', { age: 51, gender: 'M' }) .set('Sam', { age: 15, gender: 'M', id: 322 }) .set('Jane', { age: 15, gender: 'M', paid: true }), result = Array.from(directory, ([name, o]) => Object.assign({ name }, o)); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

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

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