Javascript 如何将对象{}转换为具有不同结构的对象数组[]?

Javascript 如何将对象{}转换为具有不同结构的对象数组[]?,javascript,arrays,object,Javascript,Arrays,Object,我有一个javascript中的对象: let obj= { a: { a1: [5,5], a2: [6,6] }, b: { a1: [7,7], a2: [8,8] }, c: { a1: [9,9], a2: [3,3] } } 我想把它转换成这样的数组: let arr = [ { name: 'a1', a: [5,5], b

我有一个javascript中的对象:

let obj= 
{
  a: {
       a1: [5,5],
       a2: [6,6]
     },
  b: {
       a1: [7,7],
       a2: [8,8]
     },
  c: {
       a1: [9,9],
       a2: [3,3]
     }
}
我想把它转换成这样的数组:

let arr = 
[
  {
    name: 'a1',
    a: [5,5],
    b: [7,7],
    c: [9,9]
  },
  {
    name: 'a2',
    a: [6,6],
    b: [8,8],
    c: [3,3]
  }
]
我尝试以这种方式制作阵列:

Object.entries(obj).map(([key, value]) => ({key,value}));
但我不知道如何改变结构


谢谢。

您可以使用
reduce
Object.entries
创建一个对象,然后使用
Object.values

let object={“a”:{“a1”:[5,5],“a2”:[6,6]},“b”:{“a1”:[7,7],“a2”:[8,8]},“c”:{“a1”:[9,9],“a2”:[3,3]}
const result=Object.entries(Object.reduce)(r[k,v])=>{
返回Object.entries(v).forEach([kn,vn])=>{
如果(!r[kn])r[kn]={name:kn[k]:vn}
否则r[kn][k]=vn
}),r
}, {})

console.log(Object.values(result))
您也可以使用
Object.keys
数组实现同样的功能。reduce

let obj={a:{a1:[5,5],a2:[6,6]},b:{a1:[7,7],a2:[8,8]},c:{a1:[9,9],a2:[3,3]}
const result=Object.keys(obj).reduce((r,k)=>(Object.keys(obj[k]).forEach(a=>{
r[a]=r[a]|{name:a}
r[a][k]=obj[k][a]
}),r),{})
console.log(Object.values(result))