[英]Sort ruby array in descending order with nil values and multiple arguments
首先,我找到了用可能的 nil 值對值進行排序的帖子,其他帖子對降序排序,但我確實找到了兩者的解決方案。
這是我的位置:
@records = @records.to_a.sort_by do |r| [-r.optimized_all_count, [r.year ? 1 : 0, r.year]] end
這很好用,但我希望“年份”比較器下降。 我測試了這個:
-[r.year ? 1 : 0, r.year]
但符號“-”不適用於 nil 值。 我也試過a.reverse
...
理想情況下,如何獲得 year 參數降序(並將-r.optimized_all_count
作為第一個排序參數):
2020, 2018, 2017...nil, nil, nil.
謝謝
嘗試這個:
@records = @records.to_a.sort_by do |r| [-r.optimized_all_count, [r.year ? 0 : 1, r.year ? -r.year : nil]] end
@records.to_a.sort_by { |r| [-r.optimized_all_count, -(r.year || -Float::INFINITY)] }
目前尚不清楚.to_a
是否是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.