2016-04-15 2 views
1

У меня есть следующий массив:Сортировка массива массив определенным значением во внутреннем массиве

test = [["E","188","12314","87235"],["B","1803","12314","87235"],["C","1508","12314","87235"]] 

Я хочу, чтобы отсортировать весь массив по второму значению во внутренних массивах (188,1803,1508). Так вот что я хочу иметь.

test = [["E","188","12314","87235"],["C","1508","12314","87235"],["B","1803","12314","87235"]] 

Что было бы самым эффективным способом достичь этого? Мне нужно написать sort, чтобы сделать это?

+0

Логика не ясна. Если вы их отсортируете, порядок должен быть «1508», «1803», «188». – sawa

+0

Что вы подразумевали под заказом "1508", "1803", "188"? Я хочу, чтобы они были в порядке возрастания. –

+0

Да. по возрастанию. Просто попробуйте. '[" 188 "," 1803 "," 1508 "]. Sort # => [" 1508 "," 1803 "," 188 "]'. – sawa

ответ

3

Вы можете достичь его с sort_by:

test.sort_by { |e| e[1].to_i } 
+0

Спасибо! Это очень помогло. –

1

Go с @ ответ Максима, но вы могли бы также написать:

test.sort { |e,f| e[1].to_i <=> f[1].to_i } 
    #=> [["E", "188", "12314", "87235"], 
    # ["C", "1508", "12314", "87235"], 
    # ["B", "1803", "12314", "87235"]] 
Смежные вопросы