【发布时间】:2023-03-11 07:55:01
【问题描述】:
我使用的是 Ruby 1.8.7。我有以下哈希数组。我需要先按布尔值排序,但这些结果也必须按原始顺序排序。我基本上需要将所有真正的散列移到数组的顶部,但保持原来的顺序。
任何帮助将不胜感激!
array = [{:id => 1, :accepts => false},
{:id => 2, :accepts => false},
{:id => 3, :accepts => true},
{:id => 4, :accepts => false},
{:id => 5, :accepts => true}]
sorted = array.sort do |x, y|
if x[:accepts] == y[:accepts]
0
elsif x[:accepts] == true
-1
elsif x[:accepts] == false
1
end
end
我得到的这种类型:
5 - 真
3 - 真
2 - 错误
4 - 错误
1 - 错误
我需要它来让步:
3 - 真
5 - 真
1 - 错误
2 - 错误
4 - 错误
【问题讨论】:
标签: ruby arrays sorting boolean