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.
Comments
if you are using slice(0,5) then all the extra objects you mapped are lost and you have no reference to them.
Not true. slice() clones-and-drops the array, but not the objects inside.
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.