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需要的,但我学到了一些新东西:)