我有一个对象数组,这些对象具有共同的属性名称,但其值不同。例如:
let data = [
{
value1: "11:00",
value2: 0.737462,
value3: 1.345341,
value4: 0.684655
},
{
value1: "12:00",
value2: 0.894368,
value3: 1.55891,
value4: 0.784655
},
{
value1: "13:00",
value2: 1.140516,
value3: 1.938695,
value4: 0.454655
}
]
我需要从这些对象中组成一个新的对象数组,类似于以下格式:
let datasets = [
{
label: "value1",
data: ["11:00", "12:00", "13:00"]
},
{
label: "value2",
data: [0.737462,0.894368,1.140516,]
}
// and so on
]
每个数据集中的对象都应该包含原始对象的属性名称作为label
值和对应于该名称的属性数组。我尝试像这样做:
let datasets = data.map((n) => {
for (i in n) {
return {
label: i,
data: data.map(obj => obj[i])
}
}
});
但它并没有按照预期工作——它只返回一个对象数组,其中所有对象都只有第一个属性名称作为标签。我猜这是因为它在 for...in
循环中遇到第一项时就返回了,但我无法找到更好的方法来实现我需要的功能。