Ruby:对与另一个数组“链接”的数组进行排序

时间:2010-08-19 02:31:36

标签: ruby-on-rails ruby sorting

在我的rails应用程序中,我的控制器中有一个循环:

event_prices = []
event_dates = []
for event in @customer.events
  event_prices.push(event.total_prices)
  event_dates.push(event.event_time.strftime("%b %d, %Y at %I%p"))
end

然后我使用数组将数据推送到highcharts图表中。我想要做的是按顺序排序event_dates数组,但如果我这样做,我将失去event_prices的顺序。目前,event_price[1]对应event_dates[1],依此类推,但如果我在sort!上拨打event_dates,则不会对event_prices进行排序

那么我怎样才能得到它以便我以同样的方式对两个数组进行排序?

2 个答案:

答案 0 :(得分:4)

最好使用DB进行排序。我会做以下事情:

event_prices, event_dates = 
  @customer.events(:order => "event_time ASC").map do |e|
    [e.total_prices, e.event_time.strftime("%b %d, %Y at %I%p")]
  end.transpose

答案 1 :(得分:2)

如下:

event_prices = []
event_dates = []
@customer.events.sort_by { |e| e.event_time }.each do |event|
  event_prices << event.total_prices
  event_dates << event.event_time.strftime("%b %d, %Y at %I%p")
end