簡體   English   中英

如何從查詢中構建二維數組?

[英]How to build two dimensional arrays from a query?

我在Rails中有一個查詢,該查詢提取3個數據點:data1,data2和datetime。 我需要將它們組裝成兩個不同的2D數組,以插入到這樣的圖形(Highcharts)中: http : //jsfiddle.net/RKVgx/

您可以看到數據最終將在js中使用,例如:

series: [{
    data: [[6, 540], [7, 540], [7, 1620], [8, 1620]]
},{
    data: [[6, 340], [7, 340], [7, 620], [8, 620]]
}]

通過使用lazy_high_charts,這很簡單,但是我只需要適當地組合數組以用於輸出。 我當時的想法是這樣的,但是我需要一些幫助來正確構建用於插入的2D數組:

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
)

如果您可以在上面的示例代碼中提供適當的修復程序/邏輯來正確執行此操作,我將不勝感激。

不確定我是否了解您想要什么,但是map應該可以解決問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM