principlejavascriptCritical
Deleting array elements in JavaScript - delete vs splice
Viewed 0 times
arraysplicedeletedeletingjavascriptelements
Problem
What is the difference between using the
For example:
Why even have the splice method if I can delete array elements like I can with objects?
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?
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]
undefinedNote 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"]Code Snippets
> myArray = ['a', 'b', 'c', 'd']
["a", "b", "c", "d"]
> delete myArray[0]
true
> myArray[0]
undefined> myArray[0]
undefined
> myArray
[empty, "b", "c", "d"]> myArray = ['a', 'b', 'c', 'd']
["a", "b", "c", "d"]
> myArray.splice(0, 2)
["a", "b"]
> myArray
["c", "d"]Context
Stack Overflow Q#500606, score: 1825
Revisions (0)
No revisions yet.