Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从查询中构建二维数组?_Javascript_Ruby On Rails_Ruby_Ruby On Rails 3_Highcharts - Fatal编程技术网

Javascript 如何从查询中构建二维数组?

Javascript 如何从查询中构建二维数组?,javascript,ruby-on-rails,ruby,ruby-on-rails-3,highcharts,Javascript,Ruby On Rails,Ruby,Ruby On Rails 3,Highcharts,我在Rails中有一个查询,它提取了3个数据点:data1、data2和datetime。我需要将它们组合成两个不同的2D数组,以便插入到图形(Highcharts)中,例如: 您可以看到,这些数据最终将在js中使用,如: series: [{ data: [[6, 540], [7, 540], [7, 1620], [8, 1620]] },{ data: [[6, 340], [7, 340], [7, 620], [8, 620]] }] 通过使用它是非常直接的,但是我

我在Rails中有一个查询,它提取了3个数据点:data1、data2和datetime。我需要将它们组合成两个不同的2D数组,以便插入到图形(Highcharts)中,例如:

您可以看到,这些数据最终将在js中使用,如:

series: [{
    data: [[6, 540], [7, 540], [7, 1620], [8, 1620]]
},{
    data: [[6, 340], [7, 340], [7, 620], [8, 620]]
}]
通过使用它是非常直接的,但是我只需要为输出适当地组合数组。我的想法是这样的,但我需要一些帮助来正确构建二维阵列以进行插入:

readings = ModelName.order("date DESC").select('table_name.data1, table_name.data2, table_name.date').limit(1000).all

# HELP HERE, Need 2D arrays here...
data2_and_time_array = Array.new
data1_and_time_array = Array.new

readings.each do |row|
  # HELP HERE, build place datetime into each for X axis
  data1_and_time_array.push row[:date]
  data2_and_time_array.push row[:date]

  # These are the Y data points in each series
  data1_and_time_array.push row[:data2].to_f
  data2_and_time_array.push row[:data1].to_f

end


f.series(
    :name => 'Data1',
    # Date is X & must be first in each 2D array, I believe
    # in format of: [[X1, Y1], [X2, Y2], ... [Xn, Yn]]
    :data => data1_and_time_array 
)
f.series(
    :name => 'Data2',
    :data => data2_and_time_array
)

如果您能在上面的示例代码中提供适当的修复程序/逻辑来正确执行此操作,我将不胜感激。

我不太清楚您想要什么,但应该做到以下几点:

data2_and_time_array = readings.map{|row| [row.date, row.data1.to_f] }
data1_and_time_array = readings.map{|row| [row.date, row.data2.to_f] }
编辑:

您可以在块内执行所需的任何处理:

data2_and_time_array = readings.map do{|row| [row.date, row.data1 == -1 ? row.data1.to_f : nil] } 
在执行复杂处理时,建议使用
do…end
块语法以获得更可读的代码:

data2_and_time_array = readings.map do |row| 
  date, data = row.date, row.data1
  data = (data == -1) ? nil : data.to_f
  [date, data]
end

输入数据中的详细信息太多。只需给出一个示例输入(Ruby对象),而无需进一步的ado,以及您想要的输出(您已经这样做了)。此外,如果某个值
row.data1==-1
,那么它应该将一个nil推到堆栈上,您能在使用的较短块中也这样做吗?我假设此时它将移动到一个多行do块中。最后使用了一个变量:
data1_和_date_数组=reads.map{row |[row.date,(row.short.to_f if BigDecimal(row.data1)!=BigDecimal(-100.0”)}