Tag: 分拣

你通常如何在Rails中对项目进行排序?

我有一个小例子Rails应用程序叫做票证,它可以查看和编辑出售给各个客户的虚构票证。 在ticket_controller.rb中,在def index ,我有这个标准行,由scaffolding生成: @tickets = Ticket.find(:all) 为了按名称对门票进行排序,我发现了两种可能的方法。 你可以这样做: @tickets = Ticket.find(:all, :order => ‘name’) ……或者这样: @tickets = Ticket.find(:all).sort!{|t1,t2|t1.name t2.name} (提示:Ruby文档解释了sort!将修改它正在排序的数组,而不是单独sort ,它返回已排序的数组但保持原始状态不变)。 你通常使用什么策略? 什么时候可以使用.sort! 与:order => ‘criteria’语法?

从带有ruby数字的数组生成图形路径

我有一个有12个节点的无向​​图。 在这个方法中: def generate_paths arr = [] (1..10).each { arr << [rand(12)].product([rand(12)]) } arr end 我生成一个这样的数组: arr = [[3, 12], [8, 12], [0, 3], [0, 5], [0, 10], [7, 9], [5, 5], [4, 9], [5, 12], [0, 1]]表示图形边缘。 我想在图表中找到最长的路径,例如每条边最多使用一次。 对于给定的示例,它将类似于: arr = [[1, 0], [0, 5], [5, 5], [5, 12], [12, 3], [3, 0], [0, […]

排序范围值

我想对表示数值范围的字符串数组进行排序,如下所示: b = [“0-5”, “100-250”, “5-25”, “50-100”, “250-500”, “25-50”] 使用sort方法我得到: b.sort # => [“0-5”, “100-250”, “25-50”, “250-500”, “5-25”, “50-100”] 我希望它像这样: [“0-5, “5-25”, “25-50”, “50-100”, “100-250”, “250-500”]

如何按键按字母顺序对Ruby Hash进行排序

我试图按键按字母顺序排序哈希,但我似乎无法找到一种方法来创建自己的排序类。 我发现下面的代码按值排序,如果它是一个整数,我试图修改它,但没有任何运气。 temp[“ninjas”]=36 temp[“pirates”]=12 temp[“cheese”]=222 temp.sort_by { |key, val| key } 我的目标是按键排序Hash然后输出值。 我将不得不使用不同的哈希顺序多次执行此操作,但值相同。

ruby sort_by多个字段

我正在运行Ruby 1.9.3p392。 Item = Struct.new( :name, :dir, :sort_dir ) entries = ftp.list() entries.map!{|e| Net::FTP::List.parse(e) }.map!{|e| Item.new( e.basename, e.dir?, (e.dir? ? 0 : 1) ) } render json: entries.sort_by{ |e| [ e.sort_dir, e.name ]} 出于某种原因,我没有按预期得到结果。 我确实先获取所有文件夹,然后是所有文件,但名称排序失败。 作为一个例子,我得到了我的文件夹: 内容 图片 箱子 对于文件: Global.asax中 web.config中 favicon.ico的 它将目录/文件部分分组正确,但名称排序不正确。 排序后,控制台的输出如下所示: # # # # # # # # # #

按值排序哈希然后按键排序(但键是相反的)

标题说明了一切。 total = {“Bob”=>37, “Alice”=>42, “Carl”=>42} 我想按值排序,然后按键排序,但按键降序排序。 像这样: {“Bob”=>37, “Carl”=>42, “Alice”=>42} 我试过了: return total.sort_by { |k, v| [v, k] } 但是从这里我不知道如何扭转k …

如何根据不同订单的多个条件进行排序?

我真的很想在没有猴子修补的情况下处理这个问题,但我还没有找到另一种选择。 我有一个数组(在Ruby中),我需要按多个条件排序。 我知道如何使用sort方法,我已经使用了一个选项数组进行排序的技巧,可以按多个条件排序。 但是,在这种情况下,我需要第一个条件来升序,第二个条件降序排序。 例如: ordered_list = [[1, 2], [1, 1], [2, 1]] 有什么建议? 编辑:刚才意识到我应该提到我不能轻易比较第一个和第二个值(我实际上是在使用对象属性)。 所以对于一个简单的例子,它更像是: ordered_list = [[1, “b”], [1, “a”], [2, “a”]]

在Ruby中对字符串和数字进行排序

我想首先按字符串排序数组,然后是数字。 我该怎么做呢?