Javascript 转换es6地图';将内容转换为JSON数组

Javascript 转换es6地图';将内容转换为JSON数组,javascript,json,ecmascript-6,Javascript,Json,Ecmascript 6,我有一张这样布置的地图 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 } ); 我希望将其转换为一个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 } );
我希望将其转换为一个JSON数组,其中映射中的每个键都有一个新属性“name”:

[
  { "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));

由于您已经使用了spread属性来分解贴图,因此只需将该二维数组映射到对象数组,这可以通过数组分解轻松完成:

 [...directory].map(([name,obj]) => ({name,...obj}));
或无ESnext:

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

您可以使用并构建所需的对象

const directory=newmap()
.set('John',{年龄:25,性别:'M'})
.set('Mary',{年龄:51,性别:'M'})
.set('Sam',{年龄:15,性别:'M',id:322})
.set('Jane',{年龄:15岁,性别:M',薪酬:true}),
结果=数组.from(目录,([name,o])=>Object.assign({name},o));
控制台日志(结果)
。作为控制台包装{max height:100%!important;top:0;}
您可以使用并构建所需的对象

const directory=newmap()
.set('John',{年龄:25,性别:'M'})
.set('Mary',{年龄:51,性别:'M'})
.set('Sam',{年龄:15,性别:'M',id:322})
.set('Jane',{年龄:15岁,性别:M',薪酬:true}),
结果=数组.from(目录,([name,o])=>Object.assign({name},o));
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
我将在这里冒险,假设“JSON数组”是指“对象数组”。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就没有处理JSON。您尝试过什么?你的研究结果是什么?你被困在哪一部分?我将在这里冒险,假设“JSON数组”是指“对象数组”。JSON是用于数据交换的文本符号。如果您处理的是JavaScript源代码,而不是字符串,那么您就没有处理JSON。您尝试过什么?你的研究结果是什么?你被卡在哪一部分上?是的,没有理由不使用spread而不是
数组。正如你所说,spread properties(潜伏者:第二次使用
)只是第三阶段,因此它们可能(但仅可能)成为ES2018——但它们得到了Transpiler的良好支持。不过,在没有解释的情况下,我通常不会投票。(这一次做了。)的确如此,没有理由不使用spread而不是
数组。正如你所说,spread properties(潜伏者:第二次使用
)只是第三阶段,因此它们可能(但仅可能)成为ES2018——但它们得到了Transpiler的良好支持。不过,在没有解释的情况下,我通常不会投票。(这一次我做到了。)