5
A
回答
19
使用sort_by
array.sort_by{|e| e.something}
或
sort_lambda = lambda{|e| e.something}
array.sort_by(&sort_lambda)
有了後者,你可以重複使用在其他sort_by陳述
5
在Rails,或者說用的ActiveSupport,或Ruby 1.9的sort_lambda(可能是1.8.7,不確定)你可以使用新的快捷熱度:
array.sort_by(&:something)
請注意,sort_by
可能很昂貴(並且可能有益:它取決於排序鍵複雜性)副作用:它爲每個項目生成並存儲一個臨時鍵值對,以便它可以按新鍵排序。有關詳細信息,請參見discussion in the documentation。
5
+1雙方的Eimantas的建議,但我常常有這樣的過程中出現的情況下,我有一個自定義類總是種種這樣,像專輯應該排序不區分大小寫的,忽略了導致標點符號和/一/一個。對於該用途,計算排序值一次更有效,然後相應地重新定義< =>。例如:
class Album
def sort_value
@sv ||= @name.downcase.sub(/^\W*(the|an|a) /,"")
end
def <=>(other)
sort_value <=> (other.sort_value rescue other)
end
end
0
您是否考慮過在類a和b中包含Comparable,然後調用sort?
相關問題
- 1. PHP簡單數組排序
- 2. 簡單數組排序
- 3. 無法對Ruby代碼中的數組進行排序
- 4. R使用簡單代碼排序
- 5. 排序數組的數組中的Ruby
- 6. 在ruby中排序數組的語法
- 7. 簡單的數組排序和大寫
- 8. C++簡介:排序代碼
- 9. 用簡單的代碼填充數組
- 10. 用於SQS請求籤名的最簡單的Ruby代碼?
- 11. 簡單的Ruby代碼沒有運行
- 12. 在ruby中對數組進行排序
- 13. 高級數組在Ruby中排序
- 14. 在Ruby on Rails中排序數組
- 15. 的Python簡單的代碼安排
- 16. 停滯在LearnStreet Ruby培訓。簡單的Ruby代碼第5課
- 17. 停留在LearnStreet Ruby培訓。簡單的Ruby代碼
- 18. 數組排序,不是簡單的排序
- 19. 在Windows中從ruby代碼彈出指令的最簡單方法是什麼?
- 20. 排序ruby數組updated_at
- 21. MVC最簡單的表格排序
- 22. 簡單的排序在Ruby中沒有使用排序方法(注意,要排序的名單是「字符串」)
- 23. 在Ruby中獲取數組排序的排列的索引?
- 24. 簡單的PHP數組按照子數組鍵排序
- 25. 最簡單的連接(交集)代碼
- 26. 最簡單的模型代碼
- 27. Ruby數組優化代碼
- 28. PHP代碼來排序數組.....
- 29. 在Rails中實現簡單排序/搜索的最佳方式
- 30. 在代碼中驗證AWS憑證的最簡單的方法
是的,Ruby 1.8.7的符號#to_proc。 – Chuck 2009-09-16 15:26:10
如果array.sort_on(:something)也起作用,那會很好。 – tadman 2009-09-16 18:06:09
實現它很簡單:'def sort_on(property)sort_by&property end' – Chuck 2009-09-16 20:22:29