0

I have simple map in elixir that looks like this:

%{email: ["Nie może być puste."], password: ["Nie może być puste."],
  password_confirmation: ["Nie może być puste."]}

How can I can change it format to something like this:

%{email: "Nie może być puste.", password: "Nie może być puste.", password_confirmation: "Nie może być puste."}

3
  • What do you want to do if there are multiple strings in the list? Commented Jun 2, 2017 at 20:41
  • for {k, [v]} <- your_map, into: %{}, do: {k, v} would be my answer if it's guaranteed that the list contains one item. Commented Jun 2, 2017 at 20:47
  • your_map |> Stream.map(fn {k, v} -> {k, IO.iodata_to_binary(v)} end) |> Enum.into(%{}) Commented Jun 2, 2017 at 23:22

1 Answer 1

2

If the list always has one string inside, you can do:

iex(1)> map = %{email: ["Nie może być puste."], password: ["Nie może być puste."],
...(1)>   password_confirmation: ["Nie może być puste."]}
%{email: ["Nie może być puste."], password: ["Nie może być puste."],
  password_confirmation: ["Nie może być puste."]}
iex(2)> for {k, [v]} <- map, into: %{}, do: {k, v}
%{email: "Nie może być puste.", password: "Nie może być puste.",
  password_confirmation: "Nie może być puste."}

If the list can have multiple strings, you can join them like this:

iex(3)> map = %{email: ["Nie może być puste.", "Nie może być puste."],
...(3)>   password_confirmation: ["Nie może być puste."]}
%{email: ["Nie może być puste.", "Nie może być puste."],
  password_confirmation: ["Nie może być puste."]}
iex(4)> for {k, v} <- map, into: %{}, do: {k, Enum.join(v, " ")}
%{email: "Nie może być puste. Nie może być puste.",
  password_confirmation: "Nie może być puste."}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.