【发布时间】:2017-11-07 22:55:20
【问题描述】:
我有格式的数据
[
{
"timeline_map": {
"2017-05-06": 770,
"2017-05-07": 760,
"2017-05-08": 1250
...
}
},
{
"timeline_map": {
"2017-05-06": 590,
"2017-05-07": 210,
"2017-05-08": 300
...
}
},
{
"timeline_map": {
"2017-05-06": 890,
"2017-05-07": 2200,
"2017-05-08": 1032
...
}
}
]
为了在谷歌图表中使用,我需要更改格式
[
["2017-05-06", 770, 590, 890, ...],
["2017-05-07", 760, 210, 2200, ...],
["2017-05-08", 1250, 300, 1032, ...]
]
我写了以下内容来进行转换
let mapped = _.map(
chartData.results[0].timeline_map, (timestampVal, timestampKey) => (
[timestampKey].concat(
_.map(
chartData.results, lineData => (
lineData.timeline_map[timestampKey]
)
)
)
)
)
这行得通,但我认为嵌套maps 不是一个好主意,因为它将如何增加被映射数组长度的平方的循环量。这里有没有更好的方法来达到预期的结果。
【问题讨论】:
-
["2017-05-06": 770, 590, 890, ...]这不是有效的 JS。[["2017-05-06", ...], ["2017-05-07", ...]]或{"2017-05-06": [...], "2017-05-07": [...]}。是哪一个? -
@Thomas 这只是一个省略号,表示还有更多日期。链接的 JSBIN 没有类似的伪元素
-
我说的不是省略号,我说的是
: -
@Thomas 啊。哎呀。已更正。谢谢!
-
一维对象数组。
标签: javascript arrays data-structures functional-programming lodash