2016-04-18 14 views
7

私はキーと値のペアと原子を持つタプルを持つマップを持っています。キーがタプル内のアトムではないマップからエントリを削除したいエリクサー:キーでマップをフィルタリングする方法

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

これは交差問題の一種です。私はEnum.filterMapSetを調べましたが、洗練された解決策は見つかりませんでした。これは共通の問題でなければならず、あなたのご意見は高く評価されます。

+4

私はキーホワイトリストは、最初の場所でのリストではなく、タプルであるべきだと思います。 –

答えて

12

使用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} 
関連する問題