Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 on rails ruby数组中的排序_Ruby On Rails_Ruby_Arrays - Fatal编程技术网

Ruby on rails ruby数组中的排序

Ruby on rails ruby数组中的排序,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,我有一个数组 a = ["aaa", "bee", "cee", "dee"] 我想要一个排序如下的新数组: a = ["cee", "aaa", "dee", "bee"] 请帮帮我。谢谢 a = ["aaa", "bee", "cee", "dee"] b = [a[2], a[0], a[3], a[1]] 对不起,我无法抗拒。认真地说,请解释一下这种奇怪的“排序”。您可以为数组提供一个块。sort方法具有自定义排序,如下所示: [ "aaa", "bee", "cee", "dee

我有一个数组

a = ["aaa", "bee", "cee", "dee"]
我想要一个排序如下的新数组:

a = ["cee", "aaa", "dee", "bee"]
请帮帮我。谢谢

a = ["aaa", "bee", "cee", "dee"]
b = [a[2], a[0], a[3], a[1]]

对不起,我无法抗拒。认真地说,请解释一下这种奇怪的“排序”。

您可以为
数组提供一个块。sort
方法具有自定义排序,如下所示:

[ "aaa", "bee", "cee", "dee"].sort do |x,y|
   # do the actual custom sorting
end

根据您的评论,您希望将名称为
Blueray、DVD、ipod
的数组排序为
DVD、Bluray、ipod

数组是基于定义顺序的,与散列不同。因此,如果可能,您可以按照正确的顺序重新定义数组


否则,我建议使用一个域表,带有id、名称和描述。只需确保按正确的顺序插入行(id就是顺序),所有选择框都可以使用这些按需要排序的选项。还可以使用域表,然后您只需按id引用视频类型。

查看数组交叉点,例如
[1,1,3,5]&[1,2,3]#=>[1,3]

a = ["aaa", "bee", "cee", "dee"]
a = [2, 0, 3, 1].map { |i| a[i] }
p a    # => ["cee", "aaa", "dee", "bee"]
两个数组中的第一个确定元素的排序。因此,只需使用预定义的数组
[“DVD”、“Blueray”、“ipod”]
,并对其上未排序的数组执行交集操作:
a=[“DVD”、“Blueray”、“ipod”]&a

例如:
a=[“DVD”、“蓝光”、“ipod”]&[“ipod”、“DVD”]#=>[“DVD”、“ipod”]


非常优雅和简单的解决方案。奖励:无效值被丢弃,没有任何异常、错误或其他情况。(这是奖金吗?也许吧!)

这项“排序”的准确程度如何?对不起,我没有得到您想要的结果的顺序。想要的排序的具体逻辑是什么?你能再举一个例子吗?或者,对于长度为4的数组,排序(基于索引)应该是2、0、3、1吗?我有3种格式的视频:“蓝光、DVD、ipod”。客户需要显示类似“DVD、蓝光、ipod”的视频。但是一个视频可以有1、2或3种格式。我建议你重新表述这个问题,否则它将被关闭。不确定这是否是OP需要的,但我学到了一些新东西:)