Ruby: сортировка массива, который «связан» с другим массивом - PullRequest
0 голосов
/ 19 августа 2010

В моем приложении 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

Затем я использую массивы, чтобы поместить данные в график старших графиков.Я хочу отсортировать массив event_dates по порядку, но если я это сделаю, я потеряю порядок event_prices.Прямо сейчас, event_price[1] соответствует event_dates[1] и так далее, но если я вызову sort! на event_dates, он не будет сортировать event_prices вместе с ним.

Так как можноЯ так понял, что сортирую оба массива одинаково?

Ответы [ 2 ]

4 голосов
/ 19 августа 2010

Лучше использовать БД для сортировки. Я бы сделал следующее:

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
2 голосов
/ 19 августа 2010

Как насчет чего-то вроде:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...