【发布时间】:2017-12-14 18:50:44
【问题描述】:
我有一个对象数组,它们共享共同的属性名称,但具有不同的值。例如,它们是这样的:
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 循环中的第一项后立即返回,但我想不出更好的方法来实现我所需要的。
【问题讨论】:
标签: javascript arrays javascript-objects