Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting Elixir Enum.sort排序不正确_Sorting_Elixir - Fatal编程技术网

Sorting Elixir Enum.sort排序不正确

Sorting Elixir Enum.sort排序不正确,sorting,elixir,Sorting,Elixir,我在尝试对Elixir中的结构列表进行排序时遇到了一些问题 我不知道我做错了什么 IO.puts "########### MY TOP 5 #############" IO.inspect mytop5 IO.puts "=================================" sorted = Enum.sort_by(mytop5, &(&1.count)) IO.inspect sorted IO.puts "-----------------------

我在尝试对Elixir中的结构列表进行排序时遇到了一些问题

我不知道我做错了什么

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"}]

这是基于
count
作为字符串的排序:

Enum.sort(["3", "10", "5"])# ["10", "3", "5"]
Enum.sort([3, 10, 5])      # [3, 5, 10]
这是因为
“10”<“3”
由于第一个字符而为真:

Enum.sort(["30", "9", "10", "1", "100", "3"])
# ["1", "10", "100", "3", "30", "9"]
您可以使用将其转换为:

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

这是基于
count
作为字符串的排序:

Enum.sort(["3", "10", "5"])# ["10", "3", "5"]
Enum.sort([3, 10, 5])      # [3, 5, 10]
这是因为
“10”<“3”
由于第一个字符而为真:

Enum.sort(["30", "9", "10", "1", "100", "3"])
# ["1", "10", "100", "3", "30", "9"]
您可以使用将其转换为:

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

该死,我甚至没有注意到它是一个字符串而不是一个整数!多谢各位+1Damn,我甚至没有注意到它是一个字符串而不是一个整数!多谢各位+1.