我有阵列
a = ["aaa", "bee", "cee", "dee"]
我希望有一个新的数组,如:
a = ["cee", "aaa", "dee", "bee"]
请帮帮我。感谢。
答案 0 :(得分:4)
a = ["aaa", "bee", "cee", "dee"]
b = [a[2], a[0], a[3], a[1]]
抱歉,无法抗拒。说真的,请解释这个奇怪的“排序”。
答案 1 :(得分:2)
您可以为Array.sort
方法提供一个块来进行自定义排序,如下所示:
[ "aaa", "bee", "cee", "dee"].sort do |x,y|
# do the actual custom sorting
end
答案 2 :(得分:1)
看看阵列交叉点,例如[ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
两个数组中的第一个确定元素的排序。因此,只需使用预定义的数组["DVD", "Blueray", "ipod"]
并对其上的未排序数组执行交集操作:a = ["DVD", "Blueray", "ipod"] & a
。
例如:a = ["DVD", "Blueray", "ipod"] & ["ipod", "DVD"] #=> ["DVD", "ipod"]
。
非常优雅和简单的解决方案。额外奖励:无效的值被丢弃,没有任何异常或错误或者什么。 (这是奖金吗?也许!)
答案 3 :(得分:0)
根据您的评论,您希望将名为Blueray,DVD, ipod
的数组排序为DVD, Bluray, ipod
。
与散列不同,数组按定义是基于顺序的。因此,如果可能,您可以按正确的顺序重新定义数组。
否则我会建议使用带有id,名称和描述的域表。只需确保以正确的顺序插入行(id是订单),所有选择框都可以根据需要使用这些选项。同样使用域表,您可以通过id引用视频类型。
答案 4 :(得分:0)
a = ["aaa", "bee", "cee", "dee"]
a = [2, 0, 3, 1].map { |i| a[i] }
p a # => ["cee", "aaa", "dee", "bee"]