加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby按布尔和数字排序

发布时间:2020-12-16 21:14:54 所属栏目:百科 来源:网络整理
导读:我正在使用 Ruby 1.8.7.我有以下哈希数组.我需要先按布尔值排序,但这些结果必须按原始顺序排序.我基本上需要将所有真正的哈希值移到数组的顶部,但保持原始顺序. 任何帮助,将不胜感激! array = [{:id = 1,:accepts = false},{:id = 2,{:id = 3,:accepts = tr
我正在使用 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)}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读