我想重新排序陣列陣列。默認情況下,陣列按英文鍵排序。
我的意見
english_sorted_terms = [
[
"A1_english", {"domains"=>[], "en"=>{"name"=>"A_english", "def"=>"A"}, "de"=>{"name"=>"Z_german", "def"=>"..." }}
],
[
"Z1_english", {"domains"=>[], "en"=>{"name"=>"Z_english", "def"=>"Z"}, "de"=>{"name"=>"A_german", "def"=>"..."}}
]
]
'Z1_english' 必須是排序后的第一個元素,因為它包含名稱 'A_german'。.sort_by! { |key| key["de"]['name'] }正在作業,但它洗掉了第一個陣列元素。
到目前為止我的嘗試
此代碼更正了“de”子鍵,但我無法重新插入正確的父鍵:
english_sorted_terms
.map { |term| term[1] }
.sort_by { |key| key["de"]['name'] }
此代碼重新插入密鑰,但排序不正確:
english_sorted_terms
.map { |term| [term[1]].sort_by! { |key| key["de"]['name'] }.unshift term[0] }
uj5u.com熱心網友回復:
Ruby 排序通過比較元素來作業,您可以自己定義比較標準。在此示例中,您將與原始陣列項的第二個元素的 ['de']['name'] 進行比較。例如:
english_sorted_terms.sort { |a, b| a.second['de']['name'] <=> b.second['de']['name'] }
請參閱https://apidock.com/ruby/Array/sort。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/495301.html
