Ruby对前n个元素的自定义排序
我想根据我的自定义顺序对字符串数组进行排序。问题是我不知道数组中的所有元素,但我确定它有3个字符串(高/中/低)。所以我希望这3个是前3个值。终于休息了 例如: 传入阵列 数组1=[“高”、“非进口”、“中等”、“进口种类”、“低”]Ruby对前n个元素的自定义排序,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我想根据我的自定义顺序对字符串数组进行排序。问题是我不知道数组中的所有元素,但我确定它有3个字符串(高/中/低)。所以我希望这3个是前3个值。终于休息了 例如: 传入阵列 数组1=[“高”、“非进口”、“中等”、“进口种类”、“低”] array2=[“低”、“随机优先级”、“中等”、“高”] 只有中高和低是固定的,其余的都在不断变化或可能根本不存在 所需输出 [“高”,“中”,“低”,休息。(顺序无关紧要)]] 我知道我可以删除和合并,但在代码中,我为什么要删除和合并会让人困惑。有更好的方法吗
array2=[“低”、“随机优先级”、“中等”、“高”] 只有中高和低是固定的,其余的都在不断变化或可能根本不存在 所需输出 [“高”,“中”,“低”,休息。(顺序无关紧要)]] 我知道我可以删除和合并,但在代码中,我为什么要删除和合并会让人困惑。有更好的方法吗?您可以使用该方法并实现如下内容:
["high", "not impt" , "med" , "kind of impt" , "low" ].sort_by do |a|
["high", "med", "low"].index(a) || Float::INFINITY
end
索引
方法对返回0
,1
和2
,对“高”
,“中”
和“低”
,对其他值返回nil
。因此,“high”
、“med”
和“low”
将在开头,其他将在结尾,因为每个值都小于Float::INFINITY
,您可以使用该方法并实现如下内容:
["high", "not impt" , "med" , "kind of impt" , "low" ].sort_by do |a|
["high", "med", "low"].index(a) || Float::INFINITY
end
索引
方法对返回0
,1
和2
,对“高”
,“中”
和“低”
,对其他值返回nil
。因此,“high”
、“med”
和“low”
将在开头,而其他的则在结尾,因为每个值都小于Float::INFINITY
,出于某种原因,它的打印顺序是相同的。下面的代码是因为sort\u by
不会改变它调用的对象。您应该重新分配结果或使用sort\u by代码>它使对象发生变异。我更新了你的代码片段:出于某种原因,它的打印顺序是一样的。下面的代码是因为sort\u by
不会改变它调用的对象。您应该重新分配结果或使用sort\u by代码>它使对象发生变异。我更新了您的代码片段: