Elixir:如何按键过滤地图

时间:2016-04-18 15:01:00

标签: elixir

我有一个带有键值对的Map和一个带有原子的元组。我想删除Map中任何键,而键不是元组中的原子

m = %{value1: nil, value2: nil, value4: nil}
t = {:value1, :value3, :value4}
# The result should be %{value1: nil, value4: nil}

这是一种交叉问题。我查看了Enum.filterMapSet,但没有找到优雅的解决方案。这一定是一个常见问题,您的意见得到了高度赞赏。

1 个答案:

答案 0 :(得分:15)

使用Map.take/2Tuple.to_list/1

iex(1)> m = %{value1: nil, value2: nil, value4: nil}
%{value1: nil, value2: nil, value4: nil}
iex(2)> t = {:value1, :value3, :value4}
{:value1, :value3, :value4}
iex(3)> Map.take(m, Tuple.to_list(t))
%{value1: nil, value4: nil}