Use the following function to check if an object is empty:
function isObjectEmpty(obj) { return Object.keys(obj).length === 0 && // Checks the length of the object is 0 Object.getPrototypeOf(obj) === Object.prototype; // Checks that it is actually an object }
The first statement is self-explanatory – for an object to be empty, it must not have any keys. The second statement is there because JavaScript has an odd behaviour in handling types.
console.log(Object.keys(new Date()).length) // 0 console.log(Object.keys("key").length) // 3 console.log(Object.keys("").length) // 0
From the above, you can see that when a string is passed through, it counts the length of the string. Also when a Date is passed through, it also returns a length of 0. The second conditional checks that the type is actually an object to ensure these values do not inadvertently give a false positive.