我有陣排序的Array紅寶石
a = ["aaa", "bee", "cee", "dee"]
我想有新的陣列排序像:
a = ["cee", "aaa", "dee", "bee"]
請幫助我。謝謝。
我有陣排序的Array紅寶石
a = ["aaa", "bee", "cee", "dee"]
我想有新的陣列排序像:
a = ["cee", "aaa", "dee", "bee"]
請幫助我。謝謝。
a = ["aaa", "bee", "cee", "dee"]
b = [a[2], a[0], a[3], a[1]]
對不起,無法抗拒。真的,請解釋這個奇怪的「排序」。
+1,因爲它的速度很快:) – 2010-10-20 08:27:34
你可以給爲Array.sort
方法塊有一個自定義排序,像這樣:
[ "aaa", "bee", "cee", "dee"].sort do |x,y|
# do the actual custom sorting
end
從您的意見去,要排序以名字Blueray,DVD, ipod
爲DVD, Bluray, ipod
數組。
數組按定義基於順序,與散列不同。所以如果可能的話,你可以按照正確的順序重新定義你的數組。
否則,我會建議使用域名錶,帶有ID,名稱和描述。只要確保以正確的順序插入行(id是訂單),並且您的所有選擇框都可以使用這些選項按需要排序。也可以使用域名錶格,然後按照id來引用視頻類型。
a = ["aaa", "bee", "cee", "dee"]
a = [2, 0, 3, 1].map { |i| a[i] }
p a # => ["cee", "aaa", "dee", "bee"]
查看陣列交叉點,例如, [ 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"]
。
非常優雅和簡單的解決方案。獎勵:無效值將被丟棄,沒有任何異常或錯誤或曾經。 (這是獎金嗎?也許!)
不知道這是OP的需求,但我學到了新東西:) – nathanvda 2010-10-20 11:30:21
這個'排序'究竟是如何? – 2010-10-20 08:17:58
對不起,但我沒有得到你想要的結果的順序。 – Ruel 2010-10-20 08:18:21
期望排序的具體邏輯是什麼?你能舉出另一個例子嗎?或者,對於長度爲4的數組,排序(基於索引)是否應該看起來像2,0,3,1? – Flinsch 2010-10-20 08:21:49