but map also creates a new array, and within map you are not mutating the items of the old array but creating brand new ones no?
[...].map(p => ({...p, canDrink}))
^ the original items of the array are not mutated in this map callback. you could mutate them if you really wanted, i.e.
[...].map(p => {p.canDrink = p.age > 20; return p})
but that is a straight up hack.