Elixir 根据值在两个贴图之间选择

Elixir 根据值在两个贴图之间选择,elixir,phoenix-framework,Elixir,Phoenix Framework,我有以下数据集: %{ "away" => %{ "id" => "575ec304-wlk3-239n-3032jdns3944", "points" => 115 }, "home" => %{ "id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c", "points" => 120 } } 我想返回点最多的地图,这样我就可以得到这个 %{ "home" =>

我有以下数据集:

%{
  "away" => %{
    "id" => "575ec304-wlk3-239n-3032jdns3944",
    "points" => 115
  },
  "home" => %{
    "id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c",
    "points" => 120
  }
}
我想返回点最多的地图,这样我就可以得到这个

%{
  "home" => %{
    "id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c",
    "points" => 120
  }
}
我在想enum.find可以解决这个问题,但我没有任何运气。任何帮助都会很好。

您希望用于此目的,因为您不需要正在搜索的项目的特定属性,而是希望项目本身具有最多的点数

iex> data = %{
  "away" => %{
    "id" => "575ec304-wlk3-239n-3032jdns3944",
    "points" => 115
  },
  "home" => %{
    "id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c",
    "points" => 120
  }
}
iex> Enum.max_by(data, fn {_, value} -> value["points"] end)
{"home", %{"id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c", "points" => 120}}
您希望用于此目的,因为您不需要正在搜索的项目的特定属性,而是希望项目本身具有最多的点

iex> data = %{
  "away" => %{
    "id" => "575ec304-wlk3-239n-3032jdns3944",
    "points" => 115
  },
  "home" => %{
    "id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c",
    "points" => 120
  }
}
iex> Enum.max_by(data, fn {_, value} -> value["points"] end)
{"home", %{"id" => "583ec7cd-fb46-11e1-82cb-f4ce4684ea4c", "points" => 120}}
虽然Enum.max_by/4在这里似乎是一个完美的选择,但最有效的解决方案是使用带有保护条款的普通旧商品

输入=%{…} Enum.reduceinput,无,fn {{{点=>pe}},{{{点=>pa}}=acc当pa>pe->acc时 e、 _ue->e 终止 ⇒{home,%%{id=>583ec7cd-fb46-11e1-82cb-f4ce4684ea4c,points=>120} 要从元组返回映射,可以使用and包装结果

输入 |>Enum.reducenil,fn {{{点=>pe}},{{{点=>pa}}=acc当pa>pe->acc时 e、 _ue->e 终止 |>List.wrap |>新地图 ⇒%%{home=>%{id=>583ec7cd-fb46-11e1-82cb-f4ce4684ea4c,点=>120} 虽然Enum.max_by/4在这里似乎是一个完美的选择,但最有效的解决方案是使用带有保护条款的普通旧商品

输入=%{…} Enum.reduceinput,无,fn {{{点=>pe}},{{{点=>pa}}=acc当pa>pe->acc时 e、 _ue->e 终止 ⇒{home,%%{id=>583ec7cd-fb46-11e1-82cb-f4ce4684ea4c,points=>120} 要从元组返回映射,可以使用and包装结果

输入 |>Enum.reducenil,fn {{{点=>pe}},{{{点=>pa}}=acc当pa>pe->acc时 e、 _ue->e 终止 |>List.wrap |>新地图 ⇒%%{home=>%{id=>583ec7cd-fb46-11e1-82cb-f4ce4684ea4c,点=>120} 您需要|>List.wrap |>Map.new或喜欢返回地图。您需要|>List.wrap |>Map.new或喜欢返回地图。