我将此地图存储在客户变量中
%{
billing_contact: #Ecto.Association.NotLoaded<association:billing_contact is not loaded>,
billing_contact_id: 305,
business_contact: #Ecto.Association.NotLoaded<association:business_contact is not loaded>,
business_contact_id: nil,
disabled_message: "",
end_date: nil,
id: 6851,
is_disabled: false,
name: "test",
start_date: #DateTime<2018-08-17 12:56:50.498078Z>,
technical_contact: #Ecto.Association.NotLoaded<association:technical_contact is not loaded>,
technical_contact_id: nil,
users: #Ecto.Association.NotLoaded<association :users is not loaded>
}
我要删除所有key value pairs where value is Ecto.Association.NotLoaded
。我阅读了Map文档,但找不到任何根据值删除键值的功能
我想这样做dynamically
。因此,只要有映射进来,它就会自动删除所有值为Ecto.Association的键值对。
我必须将此数据发送到前端。因此需要删除此Ecto.Association.Not加载键值对。
谢谢
答案 0 :(得分:1)
Enum.filter(input, fn
{_, %Ecto.Association.NotLoaded{}} -> false
_ -> true
end)
Ecto.Association.NotLoaded
是一个结构,因此很容易对其进行模式匹配并拒绝所有不需要的kv对。
答案 1 :(得分:1)
这是使用comprehensions的一种方式:
for {k, v} <- customer,
%Ecto.Association.NotLoaded{} != v,
into: %{}, do: {k, v}