Ruby按布尔和数字排序

前端之家收集整理的这篇文章主要介绍了Ruby按布尔和数字排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 Ruby 1.8.7.我有以下哈希数组.我需要先按布尔值排序,但这些结果必须按原始顺序排序.我基本上需要将所有真正的哈希值移到数组的顶部,但保持原始顺序.

任何帮助,将不胜感激!

array = [{:id => 1,:accepts => false},{:id => 2,{:id => 3,:accepts => true},{:id => 4,{: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 – 假

解决方法

这样做的工作:
array.sort{|a,b| (a[:accepts] == b[:accepts]) ? ((a[:id] < b[:id]) ? -1 : 1) : (a[:accepts] ? -1 : 1)}

猜你在找的Ruby相关文章