2016-04-15 6 views
1

I haben folgende Anordnung:Sorting ein Array von Arrays um einen bestimmten Wert in der inneren Anordnung

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

ich das ganze Array durch den zweiten Wert in dem inneren Arrays zu sortierenden (188,1803,1508). Das möchte ich haben.

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

Was wäre der effizienteste Weg, dies zu erreichen? Muss ich eine sort schreiben, um es zu tun?

+0

Die Logik ist nicht klar. Wenn Sie sie sortieren, sollte die Reihenfolge "1508", "1803", "188" sein. – sawa

+0

Was meinst du mit der Bestellung sollte "1508", "1803", "188" sein? Ich möchte, dass sie in aufsteigender Reihenfolge sind. –

+0

Ja. aufsteigende Reihenfolge. Probier es einfach. '[" 188 "," 1803 "," 1508 "]. Sort # => [" 1508 "," 1803 "," 188 "]'. – sawa

Antwort

3

Sie können es mit sort_by erreichen:

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

Danke! Das hat sehr geholfen. –

1

mit @ Antwort Maxim gehen, aber man könnte auch schreiben:

test.sort { |e,f| e[1].to_i <=> f[1].to_i } 
    #=> [["E", "188", "12314", "87235"], 
    # ["C", "1508", "12314", "87235"], 
    # ["B", "1803", "12314", "87235"]] 
Verwandte Themen