You can use delete
keyword to remove properties from objects.
if(myObject.hasOwnProperty('item1')) {
delete myObject.item1;
}
Note that, To remove an element from an array, use Array.splice
or Array.pop
. For example:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
The delete
keyword in JavaScript has a different function to that of the keyword in C and C++: it does not directly free memory. Instead, its only purpose is to delete properties from objects.
For arrays, removing a property corresponding to an index, creates a sparse array (ie. an array with a "hole" in it). Most browsers represent these missing array indices as "empty".
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Different built-in functions in JavaScript handle sparse arrays differently.
-
for...in
will skip the empty index completely. - A traditional
for
loop will returnundefined
for the value at the index. - Any method using
Symbol.iterator
will returnundefined
for the value at the index. -
forEach
,map
andreduce
will simply skip the missing index.
So, the delete
keyword should not be used to removing elements from an array. Arrays have a dedicated methods for removing elements and reallocating memory: Array.splice()
and Array.pop
.
Array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
Array.slice([begin[, end]])
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
Array.pop
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
Array.pop
Array.pop
removes the last element from an array, and returns that element. This operation changes the length of the array.