我有對象的數組排序基於屬性的陣列,其可以在某些元素是nil
[<#a star=1 val=1>, <#a star=nil val=3> , <#a star=2 val=2>]
我需要的陣列,以通過時間進行排序,然後通過VAL
[ <#a star=2 val=2>, <#a star=1 val=1>, <#a star=nil val=3> ]
但使用sort_by會拋出錯誤,因爲時間爲零。
我使用的是醜陋的方式,現在進行排序,但我相信有一個很好的方式去了解它
starred=[]
@answers.each {|a| (starred << a) if a.starred }
@[email protected]
starred=starred.sort_by {|a| a.starred }.reverse
@[email protected]
感謝@阿明 - 阿里亞納,您的解決方案爲我工作,我認爲是更具可讀性。 – monteirobrena 2014-08-28 13:00:14
這不像OP的初始代碼那樣對於像'-5'這樣的負值 – Nakilon 2016-04-29 13:39:52