如何排序該數組,以便所有與optional = true
的散列都是最後一個?使用「排序」排序紅寶石中的對象數組
my_array = [
{ name: "foo", optional: true },
{ name: "pop" },
{ name: "boop", optional: true },
{ name: "pop", optional: false }
]
我嘗試這樣做:
my_array.sort { |a,b| a['optional'] <=> b['optional'] }
但我得到這個錯誤:
comparison of Hash with Hash failed
錯誤是令人驚訝的,因爲做一個[ '可選']將返回true
值,false
,或nil
。
注意:
我知道這個解決方案.sort_by { |a| (a['optional'] ? 1 : 0) }
。我想特別瞭解sort
方法。