2014-04-08 16 views
7

Tôi muốn sắp xếp một mảng của chuỗi đại diện cho dãy số như sau:phạm vi phân loại đánh giá cao

b = ["0-5", "100-250", "5-25", "50-100", "250-500", "25-50"] 

Sử dụng phương pháp sort tôi nhận được:

b.sort 
# => ["0-5", "100-250", "25-50", "250-500", "5-25", "50-100"] 

Tôi muốn nó như thay vì điều này:

["0-5, "5-25", "25-50", "50-100", "100-250", "250-500"] 
+2

bạn đã thử chuyển đổi những chuỗi để dãy thực tế và sắp xếp những? – Severin

Trả lời

5
b.sort_by { |a| a.split('-').first.to_i } 

=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"] 
15

Thử:

b.sort_by { |r| r.split('-').map(&:to_i) } 
# => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"] 

Giải pháp này mất mỗi mục ("0-5") chia nó thành hai mục (["0", "5"]) và chuyển đổi chúng thành số nguyên ([0, 5]). Bây giờ sắp xếp sắp xếp theo mảng (mục đầu tiên đầu tiên và thứ hai là bộ ngắt kết nối).

5
b.sort_by(&:to_i) 
    #=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"] 

"25-50".to_i #=> 25 
Các vấn đề liên quan