Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deleting array elements in JavaScript - delete vs splice

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?

like image 966
lYriCAlsSH Avatar asked Feb 01 '09 11:02

lYriCAlsSH


People also ask

What is the most efficient way to remove an element from an array?

Most efficient way to remove an element from an array, then reduce the size of the array.

How do you remove an element from an array using splice?

Find the index of the array element you want to remove using indexOf , and then remove that index with splice . The splice() method changes the contents of an array by removing existing elements and/or adding new elements. The second parameter of splice is the number of elements to remove.

How do you delete array completely in JavaScript?

JavaScript Array delete() Array elements can be deleted using the JavaScript operator delete . Using delete leaves undefined holes in the array. Use pop() or shift() instead.


1 Answers

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"] 
like image 50
Andy Hume Avatar answered Sep 30 '22 16:09

Andy Hume