2016-05-25 38 views
0

を並べ替えていない...エリクシールEnum.sort私はエリクシールにおける構造体のリストをソートしようとしているいくつかの問題を抱えている正しく

私は私が間違ってやっているものを見つけることができません。ここで

IO.puts "########### MY TOP 5 #############" 
IO.inspect mytop5 
IO.puts "=================================" 
sorted = Enum.sort_by(mytop5, &(&1.count)) 
IO.inspect sorted 
IO.puts "------------------------" 

は結果だ

iex(67)> ########### MY TOP 5 ############# 
iex(67)> [%{count: "3", from: "AUD", rate: 0.64536947, to: "EUR"}, 
%{count: "10", from: "USD", rate: 1.3876, to: "AUD"}, 
%{count: "11", from: "USD", rate: 0.89726335, to: "EUR"}] 
iex(67)> ================================= 
iex(67)> [%{count: "3", from: "AUD", rate: 0.64536947, to: "EUR"}, 
%{count: "11", from: "USD", rate: 0.89726335, to: "EUR"}, 
%{count: "10", from: "USD", rate: 1.3876, to: "AUD"}] 
iex(67)> ------------------------ 

中:

iex(3)> [%{plop: "aze", count: 5, name: "a"}, %{plop: "aze", count: 1, name: "p"}, %{plop: "aze", count: 45, name: "e"}] |> Enum.sort_by(&(&1.count)) 
[%{count: 1, name: "p", plop: "aze"}, %{count: 5, name: "a", plop: "aze"}, 
%{count: 45, name: "e", plop: "aze"}] 

答えて

5

これはcountは、文字列であることに基づいてソートされます。

Enum.sort(["3", "10", "5"])# ["10", "3", "5"] 
Enum.sort([3, 10, 5])  # [3, 5, 10] 

"10" < "3"がTRUあるためです

Enum.sort(["30", "9", "10", "1", "100", "3"]) 
# ["1", "10", "100", "3", "30", "9"] 

あなたはそれを変換するためにString.to_integer/1を使用することができます:電子による最初の文字に

Enum.sort_by(mytop5, &(String.to_integer(&1.count))) 
+0

くそー、私もそれが文字列ではなく整数だったという事実に注意を払いませんでした!ありがとうございました。 +1 – TheSquad

関連する問題