草庐IT

arrays - 如何每次都以相同的方式对数组进行洗牌?

调用Array#shuffle随机打乱一个数组,但我想重复打乱-即,每次都以相同的方式打乱。有办法吗?例如,我想调用shuffle_with_key(123)并每次都得到相同的结果。 最佳答案 Array#shuffle可以采用种子Random实例。a=[1,2,3,4]seed=1a.shuffle(random:Random.new(seed))#=>[4,1,3,2]a.shuffle(random:Random.new(seed))#=>[4,1,3,2]只需将seed=1替换为您要使用的任何随机种子即可。

ruby - 在 Ruby 中按字母顺序对数组进行排序,但最后使用大写单词

我正在尝试在Ruby中按字母顺序对字符串进行排序。问题是,它将大写单词放在字符串的开头,但我希望它们放在末尾。我的原始字符串是:["Apple","banana","Zebra","orange"]我想要什么:["banana","orange","Apple","Zebra"] 最佳答案 交换大小写排序:["Apple","banana","Zebra","orange"].sort_by(&:swapcase)#=>["banana","orange","Apple","Zebra"]

ruby-on-rails - ruby 按字母顺序对数组进行排序,唯一并循环 5 次

我正在从数组中检索元素:-member_results.eachdo|member|=member它返回这样的东西:["John","Jason","Andy","Zee","Sandy","Randy","Grisham"]我需要按字母顺序对数组进行排序,只从数组中检索前五个唯一元素。有人可以向我推荐一种为此编写帮助程序的有效方法吗?编辑:因此,根据squiguy提供的答案,我做了以下工作:member_results.map(&:downcase).sort.uniq.take(5)这解决了我的大部分问题。但是当我显示这些结果时,我需要将它们恢复为原始格式。Forexampleth

ruby-on-rails - 如何在排序后对数组元素进行分页?

我有一个Controller方法,可以按派生属性对元素进行排序。只要我不尝试分页,我就可以打印到View。当我调用@foos=@foos.pageparams[:page]我收到以下错误:undefinedmethod'page'for#有人可以在这里提供一些指导吗?谢谢。这是整个Controller方法:defindex_by_capacityifcurrent_user.is_view_major?@foos=Foo.major_attr(:name)else@foos=Foo.order(:name)end@foos=@foos.sort_by!{|a|a.capacity_av

ruby - 如何在 Ruby 中对数组进行分组和求和?

我有一个这样的数组:ar=[[5,"2014-01-27"],[20,"2014-01-28"],[5,"2014-01-28"],[10,"2014-01-28"],[15,"2014-01-29"],[5,"2014-01-29"],[5,"2014-01-30"],[10,"2014-01-30"],[5,"2014-01-30"]]我最终需要做的是按日期对数组项进行分组,并对每个子数组的第一项中的数字求和。所以输出会是这样的:[[5,"2014-01-27"],[35,"2014-01-28"],[20,"2014-01-29"],[20,"2014-01-30"]]

ruby - 如何按三个或更多元素对数组数组进行排序( ruby )

我有一个包含14列的csv文件,我想在ruby​​中按第6列、第2列和第11列对它进行排序。有一个很好的方法.sort_by但它只适用于两列,不是吗。和array_of_arrays.sort_by{|e|[e[2],e[0],e[1]],}不工作。假设在下面的示例中,我希望它按第3、1、2列排序array_of_arrays=[[1,9,'a'],[2,2,'a'],[2,6,'b'],[1,3,'a'],[2,1,'b']]array_of_arrays.each{|line|putsline.inspect}putsarray_of_arrays.sort_by{|e|[e[2]

ruby - 如何按字母顺序对数组进行排序?

我的语法有问题,尝试了一些方法,但仍然没有正确。我不明白什么?谢谢change=['cents','pennies','coins','dimes','pence','quarters']change.sort{|anythinghere|abputs"Ascending#{anythinghere}"} 最佳答案 为什么不只是change.sort?Array#sort没有block默认升序排序,也就是block{|a,b|ab}:sorted=change.sort#Ascendingsortsorted=change.sort

ruby-on-rails - 如何在 Ruby 中从特定字母开始对数组进行排序,比如字母 f?

我有一个文本数组。text_array=["bob","alice","dave","carol","frank","eve","jordan","isaac","harry","george"]text_array=text_array.sort会给我们一个排序数组。但是,我想要一个排序数组,其中f作为我们订单的第一个字母,e作为最后一个字母。所以最终的结果应该是...text_array=["frank","george","harry","isaac","jordan","alice","bob","carol","dave","eve"]实现此目标的最佳方法是什么?

ruby-on-rails - 在 Ruby 中对数组进行排序,忽略文章 ("the"、 "a"、 "an")

在我的应用程序中,我需要显示歌曲列表。现在我正在这样做:Song.all.sort{|x,y|x.artist.namey.artist.name}不幸的是,这意味着“TheNotoriousB.I.G”将按T排序,而我希望他按N排序(即,我想忽略冠词——“the”、“a”和“an”--用于排序。我的第一个想法是这样做:Song.all.sort{|x,y|x.artist.name.gsub(/^(the|a|an)/i,'')y.artist.name.gsub(/^(the|a|an)/i,'')}但是好像不行。想法? 最佳答案

ruby - 以科学计数法对数字数组进行排序

我想对一组数字(以科学记数法)从小到大进行排序。这是我尝试过的(徒劳的):require'bigdecimal's=['1.8e-101','1.3e-116','0','1.5e-5']s.sort{|n|BigDecimal.new(n)}.reverse# ResultsObtained# =>["1.3e-116","1.8e-101","0","1.5e-5"]#ExpectedResults#=>["0","1.3e-116","1.8e-101","1.5e-5"] 最佳答案 Enumerable#sortblock预