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的良好支持。不过,在没有解释的情况下,我通常不会投票。(这一次我做到了。)