Keeps only the projected fields of the items of a list, as a SELECT of
some columns would: every item becomes a new object holding the projected
fields it has (a field the item lacks is not added), a field projected
twice is kept once, a null or undefined item stays as it is. Without
projections, or with an empty list, the items are returned whole.
The list and its items are never mutated; the result is always a new array.
Keeps only the projected fields of the items of a list, as a
SELECTof some columns would: every item becomes a new object holding the projected fields it has (a field the item lacks is not added), a field projected twice is kept once, anullorundefineditem stays as it is. Without projections, or with an empty list, the items are returned whole. The list and its items are never mutated; the result is always a new array.