Tag: 排序

如何排序不是简单的哈希(散列哈希)

我有这样的哈希 { 55 => {:value=>61, :rating=>-147}, 89 => {:value=>72, :rating=>-175}, 78 => {:value=>64, :rating=>-155}, 84 => {:value=>90, :rating=>-220}, 95 => {:value=>39, :rating=>-92}, 46 => {:value=>97, :rating=>-237}, 52 => {:value=>73, :rating=>-177}, 64 => {:value=>69, :rating=>-167}, 86 => {:value=>68, :rating=>-165}, 53 => {:value=>20, :rating=>-45} } 我怎样才能对它进行排序:评分 ? 或者我应该使用一些不同的结构?

如何通过两个条件对ruby数组进行排序

我想通过两个不同的条件对这个数组进行排序。 首先,我想按类型对数组进行排序:类型可以是(1,2,3,4),我想按顺序对它们进行排序4 – 1 – 2 – 3。 然后在每个不同的类型中,我想按百分比递减它们。 所以排序的数组看起来像这样: [ , , , , , ]ect 我怎样才能做到这一点? 目前我只能按类型降序排序。 array = array.sort_by {|r| r.type }

按照内部元素的数量对2D数组进行排序

如何按内部元素的长度对2D数组进行排序? 内部元素的数量不一样。 例: a = [[1], [2, 3], [4, 5, 6, 7], [8, 9]] 排序后,数组将变为: #=> [[4, 5, 6, 7], [2, 3], [8, 9], [1]]

排序:根据Ruby中的多个条件对数组进行排序

我有一个多维数组,如下所示: [ [name, age, date, gender] [name, age, date, gender] [..] ] 我想知道根据多种条件对这个数组进行排序的最佳方法……例如,我将如何根据年龄 先排序,然后根据名称进行排序? 我正在搞乱sort方法,如下: array.sort { |a,b| [ a[1], a[0] ] [ b[1], b[0] ] } 除此之外,我并不真正理解这种语法,我没有得到我期望的结果。 我应该使用sort方法吗? 我应该通过mapping数组来单独比较结果吗?

Ruby:基于整数数组对对象数组进行排序

这看起来很简单,之前应该问过,但我在Stack Overflow上找到的所有内容似乎都不起作用。 我有一个包含4个对象的数组,我想按特定顺序重新排序。 所以,它看起来像这样: array = [Obj1, Obj2, Obj3, Obj4] 我有另一个整数数组,代表索引的所需顺序: desired_order = [2,3,0,1] 所以在正确排序array之后我想看到的是: array = [Obj3, Obj4, Obj1, Obj2] 我已经想过sort_by是要使用的方法,但我似乎无法提出正确的语法。 任何帮助是极大的赞赏!

理解`sort!`块

现在我有一个arrays letter = [‘a’,’b’,’c’,’a’,’b’,’c’,’a’,’b’,’b’] 有人可以解释以下返回值吗? letter.sort! { |x| letter.count(x) } #=> [“b”, “b”, “a”, “c”, “c”, “a”, “b”, “b”, “a”]

如何在ruby中对字母数字数组进行排序

我如何在ruby中以字母数字方式对数组数据进行排序? 假设我的数组是a = [test_0_1, test_0_2, test_0_3, test_0_4, test_0_5, test_0_6, test_0_7, test_0_8, test_0_9, test_1_0, test_1_1, test_1_2, test_1_3, test_1_4, test_1_5, test_1_6, test_1_7, test_1_8, test_1_9, test_1_10, test_1_11, test_1_12, test_1_13, test_1_14, ………..test_1_121……………] 我希望我的输出是: . . . test_1_121 . . . test_1_14 test_1_13 test_1_12 test_1_11 test_1_10 test_1_9 test_1_8 test_1_7 test_1_6 test_1_5 test_1_4 test_1_3 test_1_2 test_1_1 test_0_10 test_0_9 test_0_8 test_0_7 test_0_6 […]

ruby中的版本排序(使用alphas,beta等)

如何在Ruby中对版本列表进行排序? 我见过关于自然排序的东西,但这是一个超越它的一步。 输入是一堆像这样的字符串: input = [‘10.0.0b12’, ‘10.0.0b3’, ‘10.0.0a2’, ‘9.0.10’, ‘9.0.3’] 我几乎可以用天然gem做到这一点: require ‘naturally’ Naturally.sort(input) => [“9.0.3”, “9.0.10”, “10.0.0a2”, “10.0.0b12”, “10.0.0b3”] 问题:10.0.0b3在10.0.0b12之后排序; 10.0.0b3应该是第一个。 有人有办法吗? 其他语言也很有帮助!

Rails无法将未经许可的参数转换为哈希值

我正在尝试为我的webapp实现一个简单的搜索和排序。 我正在关注railscast和这个railscast 。 我作为链接使用的可排序函数的应用程序帮助程序是: def sortable(column, title = nil) title ||= column.titleize css_class = column == sort_column ? “current #{sort_direction}” : nil direction = column == sort_column && sort_direction == “asc” ? “desc” : “asc” link_to title, params.merge(:sort => column, :direction => direction, :page => nil), {:class => css_class} end 我在视图中使用这些。 在控制器中我使用白名单: @listingssearch.where(:vehicletype => ‘Car’).order(sort_column […]

使用Ruby中的属性对对象列表进行排序

我有一个叫做basket的Fruit结构清单。 每个Fruit结构都有一个name (一个字符串)和一个calories (一个整数)。 我想对basket进行分类,以便: 具有最高calories的Fruit首先出现。 例如,具有500卡路里的水果出现在具有400卡路里的水果之前。 如果两个Fruit具有相同的calories ,那么name首先按字母顺序排列的Fruit首先出现,忽略大小写。 例如,给定两个具有相同卡路里的水果,一个名为“香蕉”的水果将在一个名为“Citrus”之前出现。 Fruit的定义不是我控制的,所以我更喜欢一种不涉及将任何东西混合到Fruit或改变Fruit的解决方案。 这可能吗?