У меня есть двумерный массив, который имеет следующую структурурубин два двумерный массив сортировки на основе первого элемента
a = [["5/2013", 20.0, 6.0, 6.0],
["7/2013", 73.0, 66.0, 66.0],
["50/2013", 11530.0, 12625.27, 12087.75],
["2/2014", 5926.0, 6058.0, 5876.4],
["3/2013", 15.0, 0.0, 0.0],
["4/2013", 15.0, 0.0, 0.0]]
Я хочу, чтобы отсортировать массив на основе первого элемента, первый элемент каждого массива не представляет неделю не в год (т.е. «2/2014» означает 2-ю неделю в 2014 году, что больше, чем «50/2013») результат будет как этот
["3/2013", 15.0, 0.0, 0.0],
["4/2013", 15.0, 0.0, 0.0],
["5/2013", 20.0, 6.0, 6.0],
["7/2013", 73.0, 66.0, 66.0],
["50/2013", 11530.0, 12625.27, 12087.75],
["2/2014", 5926.0, 6058.0, 5876.4],
]
Я попытался с этим одним
a.sort{|a,b| a[0].split('/')[1].to_i <=> b[0].split('/')[1].to_i && a[0].split('/') [0].to_i <=> b[0].split('/')[0].to_i}
но это не поможет. Я новичок в рубинах и рельсах. Может ли кто-нибудь помочь мне решить мою проблему.
Если вы сортируете как есть, '' 2/2014 "' должно прийти первым, а '7/2013" должно быть последним, в отличие от того, что у вас есть (отклонение факта, что ожидаемый результат недействителен Ruby выражение вообще). Ваш вопрос как есть противоречивый. – sawa
Это не, @sawa. Создатель вопроса, похоже, хочет, чтобы вещи были заказаны, как если бы они находились там, где месяцы этого года. – paradoja
'' 50/2013 "' ошибка или 50 означает неделю года? – benjaminjosephw