Is object empty?
I'm assuming that by empty you mean "has no properties of its own".
// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
function isEmpty(obj) {
// null and undefined are "empty"
if (obj == null) return true;
// Assume if it has a length property with a non-zero value
// that that property is correct.
if (obj.length > 0) return false;
if (obj.length === 0) return true;
// If it isn't an object at this point
// it is empty, but it can't be anything *but* empty
// Is it empty? Depends on your application.
if (typeof obj !== "object") return true;
// Otherwise, does it have any properties of its own?
// Note that this doesn't handle
// toString and valueOf enumeration bugs in IE < 9
for (var key in obj) {
if (hasOwnProperty.call(obj, key)) return false;
}
return true;
}
Examples:
isEmpty(""), // true
isEmpty(33), // true (arguably could be a TypeError)
isEmpty([]), // true
isEmpty({}), // true
isEmpty({length: 0, custom_property: []}), // true
isEmpty("Hello"), // false
isEmpty([1,2,3]), // false
isEmpty({test: 1}), // false
isEmpty({length: 3, custom_property: [1,2,3]}) // false
If you only need to handle ECMAScript5 browsers, you can use Object.getOwnPropertyNames
instead of the hasOwnProperty
loop:
if (Object.getOwnPropertyNames(obj).length > 0) return false;
This will ensure that even if the object only has non-enumerable properties isEmpty
will still give you the correct results.
How do I test for an empty JavaScript object?
ECMA 5+:
// because Object.keys(new Date()).length === 0;
// we have to do some additional check
obj // null and undefined check
&& Object.keys(obj).length === 0
&& Object.getPrototypeOf(obj) === Object.prototype
Note, though, that this creates an unnecessary array (the return value of keys
).
Pre-ECMA 5:
function isEmpty(obj) {
for(var prop in obj) {
if(Object.prototype.hasOwnProperty.call(obj, prop)) {
return false;
}
}
return JSON.stringify(obj) === JSON.stringify({});
}
jQuery:
jQuery.isEmptyObject({}); // true
lodash:
_.isEmpty({}); // true
Underscore:
_.isEmpty({}); // true
Hoek
Hoek.deepEqual({}, {}); // true
ExtJS
Ext.Object.isEmpty({}); // true
AngularJS (version 1)
angular.equals({}, {}); // true
Ramda
R.isEmpty({}); // true
How to check if object is empty in javascript for all levels in object
Here is the way to do what using recursion
const x = { a:"", b:[], c:{ x:[] }, d:{ x:{ y:{ z:'' } } }};function checkEmpty(obj){ for(let key in obj){ //if the value is 'object' if(obj[key] instanceof Object === true){ if(checkEmpty(obj[key]) === false) return false; } //if value is string/number else{ //if array or string have length is not 0. if(obj[key].length !== 0) return false; } } return true;}console.log(checkEmpty(x))x.d.x.y.z = 0;console.log(checkEmpty(x));
How to determine if a variable is an empty object, empty array or empty string?
Simply use Object.keys()
if (Object.keys(something).length) console.log("Not empty");
This works for all of strings, arrays, and of course, objects.
You can check the Object.keys documentation for more details, specifically, the examples section and the non-object coercion section, which state:
// simple array const arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// array-like object const obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']
and
In ES5, if the argument to this method is not an object (a
primitive), then it will cause a TypeError.From ES2015 onwards, a non-object argument will be coerced to an
object.// In ES5 Object.keys('foo'); // TypeError: "foo" is not an object
// In ES2015+ Object.keys('foo'); // ["0", "1", "2"]
javascript - check if object is empty
You were testing sellers
which is not empty because it contains mergedSellerArray
. You need to test sellers.mergedSellerArray
let sellers = { "mergedSellerArray": {}};if (Object.keys(sellers.mergedSellerArray).length === 0 && sellers.mergedSellerArray.constructor === Object) { console.log("sellers is empty!");} else { console.log("sellers is not empty !");}
Check if Object is Empty in ES6
You can do this way
const checkIfVerifiedExists = (user) => {
if (user && user.verified && Object.keys(user.verified).length) {
return true;
}
return false;
};
console.log(checkIfVerifiedExists(null));
console.log(checkIfVerifiedExists({something: "a"}));
console.log(checkIfVerifiedExists({verified: null}));
console.log(checkIfVerifiedExists({verified: ""}));
console.log(checkIfVerifiedExists({verified: "a"}));
console.log(checkIfVerifiedExists({verified: "a", something: "b"}));
Checking if a state object is empty
Given that this.state.errors
is an object you can do this,
//when this.state.errors object is empty
if (Object.keys(this.state.errors).length == 0) {
this.props.updateUser(user);
this.props.navigation.goBack();
}
Object.keys
will return an array or all the keys from the object this.state.errors
. Then you can check the length of that array to determine if it is an empty object or not.
Check object empty
You can't do it directly, you should provide your own way to check this. Eg.
class MyClass {
Object attr1, attr2, attr3;
public boolean isValid() {
return attr1 != null && attr2 != null && attr3 != null;
}
}
Or make all fields final and initialize them in constructors so that you can be sure that everything is initialized.
Related Topics
Verify If a Point Is Land or Water in Google Maps
How to Convert a Currency String to a Double with JavaScript
How to Pass the Value (Not the Reference) of a Js Variable to a Function
How to Include a JavaScript Script File in Angular and Call a Function from That Script
JavaScript Objects: Get Parent
Convert Base64 to Image in JavaScript/Jquery
Convert Column Index into Corresponding Column Letter
How to Listen to the Form Submit Event in JavaScript
Comparing Arrays of Objects in JavaScript
Split a String by Commas But Ignore Commas Within Double-Quotes Using JavaScript
Add Event Listener on Elements Created Dynamically
Parse Date Without Timezone JavaScript
Are Variable Operators Possible
Building a Promise Chain Recursively in JavaScript - Memory Considerations