从javascript中的对象生成新的对象数组
我有这样的目标:从javascript中的对象生成新的对象数组,javascript,ecmascript-6,Javascript,Ecmascript 6,我有这样的目标: let obj = { type: 1 name: 'Test' pr: 0 g: 1 } 我不想用它来做这样的东西: obj = [ { title: "type", value: 1, }, { title: "name", value: "Test", }, { title: "pr&qu
let obj = {
type: 1
name: 'Test'
pr: 0
g: 1
}
我不想用它来做这样的东西:
obj = [
{
title: "type",
value: 1,
},
{
title: "name",
value: "Test",
},
{
title: "pr",
value: 0,
},
{ title: "gr", value: 1 },
];
所以基本上第一个键是name,第二个键是value
我试过什么
newObj = Object.keys(obj).forEach(function (key) {
obj = {
name: key,
value: key,
};
});
这是可行的,但它只给出对象的前2个值,而不生成对象数组
因此,输出为:
obj = {
name: type,
value: 1,
};
其他条目不可见
我需要做什么?您可以使用:
const obj={
类型:1,
名称:'测试',
pr:0,
g:1
};
const res=对象条目(obj)
.map(([title,value])=>({title,value}));
控制台日志(res)代码>您也可以通过使用Object.keys()的reduce方法来执行此操作,作为替代:
让obj={
类型:1,
名称:'测试',
pr:0,
g:1,
}
const result=Object.keys(obj).reduce((acc,rec)=>{
返回[…acc{
标题:rec,
价值:obj[rec]
}]
}, [])
控制台日志(结果)
您可以使用Object.keys(…)
和map
获得所需的结果,如下所示
Object.keys(obj.map)(x=>({title:x,value:obj[x]}))代码>
const obj={
类型:1,
名称:'测试',
pr:0,
g:1
};
const res=Object.keys(obj.map)(x=>({title:x,value:obj[x]}));
控制台日志(res)代码>这是否回答了您的问题?我现在意识到我在这里使用的一些语法可能不清楚。如果您需要解释.map()
中的内容,请不要犹豫([title,value])
实际上是单个参数(当前的[key,value]数组),但我们使用。然后,{title,value}
是{title:title,value:value}
@blex的简写语法。不过,有一个建议,请将此解释添加到答案中。人们大多倾向于研究答案,而不是评论。“我发现它非常有用,信息量也很大。”Karan谢谢你的反馈,我补充道