input.focus();
document.execCommand("SelectAll");
var displayValue = window.getSelection().toString();
Трудно сказать из вашего кода, какова ваша цель, может быть, вы просто экспериментируете с Enum
, но, может быть, Map.values/1
- лучший выбор здесь?
iex(1)> val_map = %{"pri" => %{"tit" => "name1"}, "sec" => %{"tat" => "name2"}}
%{"pri" => %{"tit" => "name1"}, "sec" => %{"tat" => "name2"}}
iex(2)> Map.values(val_map)
[%{"tit" => "name1"}, %{"tat" => "name2"}]
[116 ] Отвечая на разъяснения в комментариях, вы можете сделать это так:
iex(1)> val_map = %{"pri" => %{"tit" => "name1"}, "sec" => %{"tit" => "name2"}}
%{"pri" => %{"tit" => "name1"}, "sec" => %{"tit" => "name2"}}
iex(2)> Enum.map(val_map, fn {k, %{"tit" => v}} -> %{k => v} end)
[%{"pri" => "name1"}, %{"sec" => "name2"}]
Когда вы перебираете карту, она превращается в список ключевых слов (т. Е. Вы используете кортеж):
Enum.each %{a: 1, b: 2, c: 3}, fn {key, value} ->
IO.puts "#{key} : #{value}"
end
В вашем случае вам нужно найти совпадение в части key
вы кортеж:
val_map = %{"pri" => %{"tit" => "name1"}}
fp = fn ({"pri", value}) -> value; {other_key, value} -> value end
Где во второй части вы можете сделать что-то еще со значением: преобразовать, не возвращать его и т. д.
В этом случае он вернет массив карт (значений) из вашей исходной карты:
Enum.each(val_map, fp)
# [%{"tit" => "name1"}]