Elixirの配列操作いろいろメモ
コレクションをキーでグループ化して、指定キーに追加する
# こんな配列を… inputs = [ %{ a: 1, b: [ %{aa: 1} ] }, %{ a: 1, b: [ %{aa: 2} ] }, %{ a: 2, b: [ %{aa: 3} ] } ] # こうしたい… outputs = [ %{ c: 1, d: [ %{cc: 1}, %{cc: 2} ] }, %{ c: 2, d: [ %{cc: 3} ] } ] # こんなんどうかな1 outputs = inputs |> Enum.group_by(&Map.take(&1, [:a])) |> Enum.map(fn {k, v} -> %{ c: k.a, d: Enum.map(v, fn v2 -> %{ cc: v2.aa } end) } end) # こんなんどうかな2 Enum.chunk_byで配列を分割して、分割された配列ごとにget_inするほうが簡単かも?後で試す