将对象的对象转换为JavaScript中的对象数组

nwlls2ji  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(144)

我有以下数据结构:

const data = {
    school1:{location:'medway',score:6},
    school2:{location:'milan',score:8},
    school3:{location:'brooklyn',score:103,
    }

如何在javascript中将其转换为以下格式:

const data = [
    {name:'school1', location:'medway',score:6},
    {name:'school2', location:'milan',score:8},
    {name:'school3', location:'brooklyn',score:103}
    ]
wfypjpf4

wfypjpf41#

您可以使用Object.entries方法完成此转换,该方法返回给定对象自己的可枚举字符串键控属性[key,value]对的数组。你可以这样做:

const data = {
    school1:{location:'medway',score:6},
    school2:{location:'milan',score:8},
    school3:{location:'brooklyn',score:103}
}

const newData = Object.entries(data).map(([name, value]) => ({name, ...value}));

console.log(newData);

在这段代码中,Object.entries(data)返回一个数组的数组,其中每个子数组包含一个学校名称(作为键)和相应的对象(作为值)。然后使用.map方法迭代这些数组,将每个数组解构为namevalue变量。
.map内部,为每个数组返回一个新对象。此对象以name属性(来自键)开始,然后扩展value的属性(使用...扩展语法)以包括locationscore属性。结果是一个所需格式的对象数组。

vq8itlhq

vq8itlhq2#

您可以map对象的条目。

const data={school1:{location:"medway",score:6},school2:{location:"milan",score:8},school3:{location:"brooklyn",score:103}};
const res = Object.entries(data).map(([name, v]) => ({name, ...v}));
console.log(res);

相关问题