我有对象的数组:Array对象的含有阵列对象的阵列
var arr = [
{
timemark: "2017-03-01",
db_total: c1,
db_used: d1,
hosts: e1,
items: f1
},{
timemark: "2017-03-02",
db_total: c2,
db_used: d2,
hosts: e2,
items: f2
},{
timemark: "2017-03-03",
db_total: c3,
db_used: d3,
hosts: e3,
items: f3
},..]
我struglling如何将其变换到另一个数组但具有不同的结构:
var result = [
{
topic: "db_total",
data: [
{
x: "2017-03-01",
y: c1
},{
x: "2017-03-02",
y: c2
},{
x: "2017-03-03",
y: c3
},...]
},{
topic: "db_used",
data: [
{
x: "2017-03-01",
y: d1
},{
x: "2017-03-02",
y: d2
},{
x: "2017-03-03",
y: d3
},...]
},{
topic: "hosts",
data: [
{
x: "2017-03-01",
y: e1
},{
x: "2017-03-02",
y: e2
},{
x: "2017-03-03",
y: e3
},...]
},{
topic: "items",
data: [
{
x: "2017-03-01",
y: f1
},{
x: "2017-03-02",
y: f2
},{
x: "2017-03-03",
y: f3
},...]
},...];
我知道我必须这样做:
//convert
var result = [];
for (var i=0; i<arr.length; i++) {
result[i]=[arr[i].timemark];
}
它创建数组的数组:
[
[2017-03-01],
[2017-03-02],
[2017-03-03]
]
这是几个小时后的开始。但我找不到一个方法如何开始在数组内创建对象而不是数组?试图去婴儿的步骤:)
但我真的有问题的理解片段,并可能使用错误的语法不能让它的工作。
有人可以解释如何在这种情况下正确使用循环?
太棒了!你能解释你在哪里使用函数xy()?我基本上有点了解其他所有的东西:) – user2917823
它在'arr'的映射中,只是不想在算法部分使用这种硬编码:)但是,如果你愿意,你可以将它们移动到那里像 –
我看到的唯一问题是,你没有防范对象的继承的枚举属性。类似于Object.keys(arr [0])。reduce(...,[])'会解决这个问题并一次性创建结果数组。否则,非常优雅。 – RobG