[英]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.