iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0

透過呼叫 API 來實戰演練 2

處理整批資料

整個列出來應該不是大部分的需求,我們來假想幾個場景

人口最高的國家前五名

把列表依照 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"])

上一篇
透過呼叫 API 來實戰演練
系列文
通勤看手機就可讀懂的 Elixir 語言入門教學12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言