我试图让我的头绕着Javascript数组函数。我有一个嵌套的数组像这样,在每一行覆盖相同时间段:Javascript嵌套数组转换
[{
"category": "fruit",
"variety": "apple",
"data": [{
"day": 1,
"units": 2
}, {"day": 2,
"units": 4
}]
},{
"category": "fruit",
"variety": "orange",
"data": [{
"day": 1,
"units": 3
}, {"day": 2,
"units": 5
}]
},{
"category": "veg",
"variety": "tomato",
"data": [{
"day": 1,
"units": 4
}, {"day": 2,
"units": 2
}]
}]
我想白天按类别进行总结的单位,要得到这样的数组:
[{
"category": "fruit",
"data": [{
"day": 1,
"units": 5
}, {"day": 2,
"units": 9
}]
},{
"category": "veg",
"data": [{
"day": 1,
"units": 4
}, {"day": 2,
"units": 2
}]
}]
我一直在通过长循环if语句来解决这个问题,并对它做了一些散列。你能看到一个优雅的方式来解决这个问题吗?
非常感谢!
尼斯:你用循环做什么,我用'红眼因为;以及我在哪里使用循环,你可以在'Object.keys'上使用'map' :-) – Bergi 2012-07-27 20:51:47
我特意使用'for'循环,因为如果你不熟悉JavaScript,那么更容易移植到其他语言。我的答案的目标是可读的代码。我解开了你的编辑,因为我使用中间变量来显示逻辑步骤(和真实语言一样,我更喜欢混合多种方法,使用多个Object.keys(..)。maps'看起来有点重复:p)。 – 2012-07-27 20:57:34
好的,但我会说代码应该只使用一种方法,即使是重复性的(等待,可能是一个非常高级的函数在这里帮助?)。如果你曾经理解过map()是如何工作的,那么这个部分根本不需要额外的解释:-) – Bergi 2012-07-27 21:40:31