Javascript 如何将对象{}转换为具有不同结构的对象数组[]?
我有一个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
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))