整個列出來應該不是大部分的需求,我們來假想幾個場景
把列表依照 population 排序後,再取前五個即可
list_all()
|> Enum.sort_by(&Map.get(&1, "population"), :desc)
|> Enum.take(5)
|> Enum.map(fn %{"name" => %{"common" => common_name}, "population" => population} ->
{common_name, population}
end)
執行後得到
[
{"China", 1402112000},
{"India", 1380004385},
{"United States", 329484123},
{"Indonesia", 273523621},
{"Pakistan", 220892331}
]
note: 這個 api 資料似乎有點過時,目前應該是印度最高
Enum.sort_by(["aaa", "bb"], fn x -> String.length(x) end, :desc)
Enum.take([1, 2, 3], 2)
Enum.map([1,2,3], fn x -> x + 3 end)
all
|> Enum.map(fn %{"languages" => languages_map} -> Map.values(languages_map) end)
|> List.flatten()
|> Enum.frequencies()
|> Enum.sort_by(&elem(&1, 1), :desc)
|> Enum.take(5)
|> Enum.map(fn {language, count} -> {language, count} end)
執行後得到
[
{"English", 91},
{"French", 46},
{"Arabic", 25},
{"Spanish", 24},
{"Portuguese", 10}
]
List.flatten([1, [2, [], [3]]])
Enum.frequencies(["Elixir", "Erlang", "Erlang"])