ruby按一定顺序返回固定数量的元素

ruby按一定顺序返回固定数量的元素,ruby,Ruby,这可能是个愚蠢的问题。 我知道sample从数组中返回随机数目的元素。 例如 [1,2,3].sample.times do 是否有一种方法可以始终按特定顺序返回固定数量的元素? 我不知道用ruby怎么做 编辑: 假设我始终只想从第二个和最后一个数组中返回惩罚名称、严重性和名称: offenses = PERSON_SUMMARY[:offenses].map do |offense| offense[:penalties].map do |penalty| penalty.merg

这可能是个愚蠢的问题。 我知道sample从数组中返回随机数目的元素。 例如 [1,2,3].sample.times do

是否有一种方法可以始终按特定顺序返回固定数量的元素? 我不知道用ruby怎么做

编辑: 假设我始终只想从第二个和最后一个数组中返回惩罚名称、严重性和名称:

offenses = PERSON_SUMMARY[:offenses].map do |offense|
  offense[:penalties].map do |penalty|
    penalty.merge(name: offense[:offense_name])
  end
end.flatten

=> [{:penalty_name=>"Prison", :severity=>"Medium", :name=>"Speeding"}, {:penalty_name=>"Ticket", :severity=>"Low", :name=>"Speeding"}, {:penalty_name=>"Prison", :severity=>"Medium", :name=>"Shoplifting"}, {:penalty_name=>"Fine", :severity=>"Low", :name=>"Shoplifting"}]
现在我正在做:

offenses.each do |hash|
hash.sample

我想你想要的是:

[1,2,3,4,5].sample(4).sort
它将从数组中取出4个随机数并对其排序

编辑-评论后:

[5,4,3,2,1].values_at(1,-1).sort #second element(1) and last one(-1)
=>[1, 4] 

您可以在处使用
值指定所需的值(负数从后面开始计数)


您如何知道要返回哪些元素?你能更精确地定义这个问题吗?谢谢。但我不想要随机元素。每次它都应该返回与我所需相同的元素。如果要指定可以在
处使用的
值,\u并对其排序,则采样将始终返回随机元素。。。我已经编辑了我的答案
ar=[{:penalty_name=>"Prison", :severity=>"Medium", :name=>"Speeding"}, {:penalty_name=>"Ticket", :severity=>"Low", :name=>"Speeding"}, {:penalty_name=>"Prison", :severity=>"Medium", :name=>"Shoplifting"}, {:penalty_name=>"Fine", :severity=>"Low", :name=>"Shoplifting"}]
p ar.values_at(1,-1).map{|h|h.values}
#=> [["Ticket", "Low", "Speeding"], ["Fine", "Low", "Shoplifting"]]