Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby对前n个元素的自定义排序_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby对前n个元素的自定义排序

Ruby对前n个元素的自定义排序,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我想根据我的自定义顺序对字符串数组进行排序。问题是我不知道数组中的所有元素,但我确定它有3个字符串(高/中/低)。所以我希望这3个是前3个值。终于休息了 例如: 传入阵列 数组1=[“高”、“非进口”、“中等”、“进口种类”、“低”] array2=[“低”、“随机优先级”、“中等”、“高”] 只有中高和低是固定的,其余的都在不断变化或可能根本不存在 所需输出 [“高”,“中”,“低”,休息。(顺序无关紧要)]] 我知道我可以删除和合并,但在代码中,我为什么要删除和合并会让人困惑。有更好的方法吗

我想根据我的自定义顺序对字符串数组进行排序。问题是我不知道数组中的所有元素,但我确定它有3个字符串(高/中/低)。所以我希望这3个是前3个值。终于休息了

例如:

传入阵列

数组1=[“高”、“非进口”、“中等”、“进口种类”、“低”]
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它使对象发生变异。我更新了您的代码片段: