Borislav Hadzhiev
Reading timeยท3 min
Photo from Unsplash
Use a for..in
loop to clear an object and delete all its properties. The
loop will iterate over all the enumerable properties in the object.
On each iteration, use the delete
operator to delete the current property.
const obj = {a: 'one', b: 'two'}; for (const key in obj) { delete obj[key]; } console.log(obj); // ๐๏ธ {}
The for...in loop iterates over all of an object's enumerable properties.
.
or square brackets []
notation.Properties assigned to the object using the Object.definedProperty()
method
are non-enumerable by default and are not iterated over in a for...in
loop.
The
Object.defineProperty
method is mostly used by 3rd party library creators and not in day-to-day code,
so chances are the for...in
loop covers all of your object's properties.
However, it is more performant to reassign the variable that stores the object.
To clear an object in Javascript:
let
keyword.let obj = {a: 'one', b: 'two'}; obj = {}; console.log(obj); // ๐๏ธ {}
It is much more performant to reassign the variable that stores the object, setting it to an empty object.
This is only possible if you used the let
or var
keywords to declare the
object.
Notice that we used the let
keyword when declaring the obj
variable.
let
keyword allows us to reassign the variable. Variables declared using const
cannot be reassigned.In the extremely unlikely scenario that your object contains non-enumerable properties, you can use the following approach to clear an object.
let obj = {a: 'one', b: 'two'}; Object.defineProperty(obj, 'color', { value: 'red', enumerable: false, // ๐๏ธ defaults to false configurable: true, }); const allProperties = Object.getOwnPropertyNames(obj); console.log(allProperties); // ๐๏ธ ['a', 'b', 'color'] allProperties.forEach(property => { delete obj[property]; }); console.log(Object.getOwnPropertyNames(obj)); // []
We used the Object.getOwnPropertyNames() method to get an array of the enumerable and non-enumerable properties of the object.
We used the
Array.forEach()
method to iterate over the array and cleared each property using the delete
operator.
let
keyword and reassign the variable to an empty object. This is the fastest way to clear the object and let the garbage collector do its job.Another simple way to clear an object is to use the Object.keys()
and
Array.forEach()
methods.
Object.keys()
#To clear an object in JavaScript:
Object.keys()
method to get an array of the object's keys.Array.forEach()
method to iterate over the array of keys.delete
operator to delete each key from the object.const obj = {a: 'one', b: 'two', c: 'three'}; Object.keys(obj).forEach(key => { delete obj[key]; }); console.log(obj); // ๐๏ธ {}
The Object.keys()
method returns an array of the object's keys.
const obj = {a: 'one', b: 'two', c: 'three'}; // ๐๏ธ [ 'a', 'b', 'c' ] console.log(Object.keys(obj));
The function we passed to the Array.forEach()
method gets called with each
element of the array.
const obj = {a: 'one', b: 'two', c: 'three'}; Object.keys(obj).forEach(key => { delete obj[key]; }); console.log(obj); // ๐๏ธ {}
On each iteration, we use the delete
statement to delete the current key.
After the last iteration, the object is empty.