簡體   English   中英

以 nil 值和多個 arguments 降序排列 ruby 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM