2017-10-09 67 views
0

我想根據自定義順序對字符串數組進行排序。問題是我不知道數組中的所有元素,但我確定它有3個字符串(高/中/低)。所以我想讓這3個成爲前3個值。其餘在最後Ruby對前n個元素進行自定義排序

例如:

傳入陣列

ARRAY1 = [ 「高」, 「不IMPT」, 「配有」, 「種類IMPT的」, 「低」]
數組2 = [「低」,「優先蘭特」,「配有」,「高」]

只有高中等和低是固定的,其餘全部不斷改變或可能不存在於所有

所需的輸出 [「高」,「配有」,「低」,休息。(順序無所謂)]]

我知道我可以刪除和合並,但它會在混亂代碼爲什麼我在做刪除和合並。有更好的方法嗎?

回答

2

您可以使用sort_by方法和實施這樣的事情:

["high", "not impt" , "med" , "kind of impt" , "low" ].sort_by do |a| 
    ["high", "med", "low"].index(a) || Float::INFINITY 
end 

index方法返回0,爲"high""med""low"相應和nil其他價值12。因此,"high""med""low"將是在開始和其他人在最後,因爲每一個值小於Float::INFINITY

+0

出於某種原因,其打印相同order..Below是代碼 HTTPS://codepad.remoteinterview .io/JMDYVQGSUV – TheLion

+0

這是因爲'sort_by'不會改變它所調用的對象。你應該重新分配結果或者使用'sort_by!'來改變對象。我更新了你的代碼片段:https://codepad.remoteinterview.io/JMDYVQGSUV –

相關問題