Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remember if a method mutates the original array?

I know I can find a list of mutator methods on MDN, still, in practice I always forget if methods like push() or reverse() mutates the original array or creates a new one. Is there a logic to why certain methods are mutators and some are non-mutators, so I can easily remember?

like image 275
V. Wang Avatar asked Feb 22 '19 22:02

V. Wang


People also ask

How do you not mutate an original array?

To sort an array, without mutating the original array:Call the slice() method on the array to get a copy. Call the sort() method on the copied array. The sort method will sort the copied array, without mutating the original.

Does pop mutate the original array?

The pop() method is a mutating method. It changes the length and the content of this . In case you want the value of this to be the same, but return a new array with the last element removed, you can use arr.slice(0, -1) instead.

Which of the following methods mutates the original array rather than returning a new one?

prototype. push allows us to push elements to the end of an array. This method does not return a new copy, rather mutates the original array by adding a new element and returns the new length property of the object upon which the method was called.


1 Answers

Maybe a helpful way to remember them is to identify the mutating methods and group them; there's only a small amount.

Add/remove from array:

  • Array.prototype.fill() - overwrite elements anywhere
  • Array.prototype.pop() - remove from right
  • Array.prototype.push() - add to right
  • Array.prototype.shift() - remove from left
  • Array.prototype.unshift() - add to left
  • Array.prototype.splice() - add/remove anywhere

Rearrange arrays:

  • Array.prototype.sort() - rearrange elements using a sorting function
  • Array.prototype.reverse() - reverse elements

Oddball:

  • Array.prototype.copyWithin() - honestly, I've never used this method

List of mutating array methods

  • Array.prototype.copyWithin()
  • Array.prototype.fill()
  • Array.prototype.flat()
  • Array.prototype.pop()
  • Array.prototype.push()
  • Array.prototype.reverse()
  • Array.prototype.shift()
  • Array.prototype.sort()
  • Array.prototype.splice()
  • Array.prototype.unshift()

List of non-mutating array methods

  • Array.from() - create an array from an iterable
  • Array.isArray() - check if a variable is an array
  • Array.of() - create an array; function version of []
  • Array.prototype.concat() - combine several arrays into a new single array
  • Array.prototype.entries() - get iterator of key/value pairs
  • Array.prototype.every() - check if every value matches a function
  • Array.prototype.filter() - create an array of values matching a filter
  • Array.prototype.find() - find a value using a function
  • Array.prototype.findIndex() - find the index of a value using a function
  • Array.prototype.flat() - flatten a nested array
  • Array.prototype.flatMap() - create an new array using a mapping function
  • Array.prototype.forEach() - run a side effect for each value
  • Array.prototype.includes() - check if the array includes a value
  • Array.prototype.indexOf() - find the index of a value by value
  • Array.prototype.join() - combine values into a string using a separator
  • Array.prototype.keys() - get iterator of keys
  • Array.prototype.lastIndexOf() - find the index of a value by value, starting at the end
  • Array.prototype.map() - create a new array using a mapping function
  • Array.prototype.reduce() - fold over each value, producing a new value
  • Array.prototype.reduceRight() - fold over each value, starting from the right, producing a new value
  • Array.prototype.slice() - select a subarray
  • Array.prototype.some() - check if some value matches a function
  • Array.prototype.toLocaleString() - string representation of the array, uses toLocaleString on values
  • Array.prototype.toString() - string representation of the array, uses toString on values
  • Array.prototype.values() - get iterator of values
  • Array.prototype[@@iterator]() - get default iterator
like image 182
Mulan Avatar answered Nov 01 '22 13:11

Mulan