展平/合并嵌套地图

Nem*_* Ga 3 elixir

假设我们有这样的地图:

%{"a": %{"b": 2, "c":5}, "d": 1}
Run Code Online (Sandbox Code Playgroud)

elixr 中是否有类似的函数(js 回答同一问题)?

最终结果应该是:

%{"a.b": 4, "a.c":5, "d": 1}
Run Code Online (Sandbox Code Playgroud)

Ale*_*kin 5

由于我已经多次完成此任务,并且我自己需要它,因此我iteraptor为此创建了十六进制包:

将其添加到您的依赖项列表中mix.exs

def deps do
  [{:iteraptor, "~> 1.13"}]
end
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

iex(1)> %{a: %{b: 2, c: 5}, d: 1} |> Iteraptor.to_flatmap
%{"a.b": 2, "a.c": 5, d: 1}
Run Code Online (Sandbox Code Playgroud)

它支持无限嵌套以及maps 和lists。

相应部分的代码如下:

def deps do
  [{:iteraptor, "~> 1.13"}]
end
Run Code Online (Sandbox Code Playgroud)