从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谢谢你的反馈,我补充道