Analyzing the Performance of Builtin JavaScript Data Structures
Objects
What is a JS Object?
 Unordered keyvalue pairs
 Work well when you don't need order
 Work well you when you need fast access/insertion and removal
Big O of Object Operations
 Insert  O(1)
 Delete  O(1)
 Search  O(N)
 Read  O(1)
Big O of Object Methods

Object.keys  O(N)

Object.values  O(N)

Object.entries  O(N)

hasOwnProperty  O(1)
Arrays
What is an array?
 Ordered list of indexvalue pairs
 Good for when you need order
Big O of Array Operations
 Insert  depends...
 Inserting at the end of an array is simply 1 step
 Inserting at the beginning of an array of N length takes N steps because you have to shift/reindex each value that comes after the insertion
 Delete  depends...
 Deleting at the end of an array is simply 1 step
 Deleting at the beginning of an array of N length takes N steps because you have to shift/reindex each value that comes after the deletion
 Search  O(N)
 Read  O(1)
Big O of Array Methods
 push  O(1)
 pop  O(1)
 shift  O(N)
 unshift  O(N)
 concat  O(N)
 slice  O(N)
 splice  O(N)
 sort  O(N * _{log}N)
 forEach/map/filter/reduce/etc.  O(N)