Functions, Scope & Object Model

Arrays, Collections & Immutability

Arrays are ordered indexed objects; Maps and Sets provide clearer collection semantics for key-value lookup and uniqueness. Immutable update patterns reduce accidental shared-state bugs.
  • Arrays preserve order and support indexed access
  • Objects are records, Maps are collections
  • Sets model uniqueness
  • Immutable updates preserve old references
  • Shallow copies are shallow
Collection choice
NeedUseReason
Ordered sequenceArrayIndexing and order
Known object shapeObjectNamed properties
Dynamic key-value collectionMapArbitrary keys and clear size/iteration
Unique valuesSetMembership and dedupe
Object metadata without preventing GCWeakMapWeak object keys
Immutable update by id
const nextUsers = users.map((user) =>
  user.id === changed.id ? { ...user, ...changed } : user
)

const usersById = new Map(nextUsers.map((user) => [user.id, user]))
Create a new array and new changed object; reuse unchanged objects.
Sources
  • MDN JavaScript Guide and ReferenceIndexed collections; keyed collections
  • The Modern JavaScript TutorialArrays; Map and Set
  • Eloquent JavaScript, 4th EditionData Structures