Deleting array elements in JavaScript - delete vs splice

array-splice, arrays, delete-operator, element, javascript

Solution

`delete` will delete the object property, but will not reindex the array or update its length. This makes it appears as if it is undefined:

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> delete myArray[0]
  true
> myArray[0]
  undefined

Note that it is not in fact set to the value `undefined`, rather the property is removed from the array, making it appear undefined. The Chrome dev tools make this distinction clear by printing `empty` when logging the array.

> myArray[0]
  undefined
> myArray
  [empty, "b", "c", "d"]

`myArray.splice(start, deleteCount)` actually removes the element, reindexes the array, and changes its length.

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> myArray.splice(0, 2)
  ["a", "b"]
> myArray
  ["c", "d"]

Problem

What is the difference between using the `delete` operator on the array element as opposed to using the `Array.splice` method? For example: ``` myArray = ['a', 'b', 'c', 'd']; delete myArray[1]; // or myArray.splice (1, 1); ``` Why even have the splice method if I can delete array elements like I can with objects?

Original source

Related problems