我相信我可能会在这里遗漏一些东西,所以请在我解释两种情景时请耐心等待,以期调和我的误解:
我的最终目标是通过Highcharts创建lazy_high_charts可接受的数据集,但是在此任务中,我发现它接收的数据格式非常特别。< / p>
A)我发现当数据格式化为这样时,它就可以很好地绘制点数:
[0.0000001240,0.0000000267,0.0000000722, ..., 0.0000000512]
我只需使用:
生成这样的数组array = Array.new
data.each do |row|
array.push row[:datapoint1].to_f
end
B)然而,如果我尝试使用map
函数,我最终会得到一个结果,并且Highcharts无法呈现此数据:
[[6.67e-09],[4.39e-09],[2.1e-09],[2.52e-09], ..., [3.79e-09]]
来自以下代码:
array = data.map{|row| [(row.datapoint1.to_f)] }
有没有办法哄一下地图函数在B中产生的结果更类似于情景A结果数据结构?
这个问题更加复杂,因为我还必须在此添加日期时间,但这是另一个主题,我只想先了解这一点,以及可以采取哪些措施来进一步控制我要去的地方。
最终,根据此处示例中的数据, 即使情景B应该工作 :http://www.highcharts.com/demo/spline-irregular-time(按下底部的“查看选项”按钮)< / p>
哎呀,如果你可以填写我的信息,我会在邮件中寄给你一个傻瓜! ;)
答案 0 :(得分:2)
你可以像这样修复数组
[[6.67e-09],[4.39e-09],[2.1e-09],[2.52e-09], ..., [3.79e-09]]
通过在数组上使用flatten
方法在其中嵌套数组。
但是你应该能够避免首先生成嵌套数组。只需从map
行中删除方括号:
array = data.map{|row| row.datapoint1.to_f }
答案 1 :(得分:1)
a = [[6.67e-09],[4.39e-09],[2.1e-09],[2.52e-09], [3.79e-09]]
b = a.flatten.map{|el| "%.10f" % el }
puts b.inspect
[“0.0000000067”,“0.0000000044”,“0.0000000021”,“0.0000000025”,“0.0000000038”]
答案 2 :(得分:1)
除非我也错过了某些东西,否则你的问题是你从块中返回一个单元素数组(从而创建一个数组数组)而不仅仅是值。这应该是你:
array = data.map {|row| row.datapoint1.to_f }
# => [ 6.67e-09, 4.39e-09, 2.1e-09, 2.52e-09, ..., 3.79e-09 ]