Hello and welcome,
There are many ways to update/put a key in a map, Map.update, Map.put, Map.new/2, but in that particular case where You want to update an existing atom key in a map, You can use the form map = %{map | key: value}
You can do like this…
iex(1)> map = %{
tasks: [
%{completed: false, date_added: "3.18.2021", id: 1, name: "walk the dog"},
%{completed: false, date_added: "3.18.2021", id: 2, name: "cook dinner"},
%{completed: false, date_added: "3.18.2021", id: 3, name: "laundry"}
]
}
iex(2)> i = 1
iex(3)> map = %{map | tasks: Enum.map(map.tasks, fn
task when task.id==id -> %{task | completed: true}
task -> task
end)}
%{
tasks: [
%{completed: true, date_added: "3.18.2021", id: 1, name: "walk the dog"},
%{completed: false, date_added: "3.18.2021", id: 2, name: "cook dinner"},
%{completed: false, date_added: "3.18.2021", id: 3, name: "laundry"}
]
}


















