Amr
Amr

Reputation: 5159

In Javascript, How to determine if an object property exists and is not empty?

Suppose I have the next javascript object:

var errors = {
    error_1: "Error 1 description",
    error_2: "Error 2 description",
    error_3: "",
    error_4: "Error 4 description"
};

How can I determine if the property error_1 exists in the errors object and is not empty as well?

Upvotes: 25

Views: 45075

Answers (4)

Armen Nersisyan
Armen Nersisyan

Reputation: 333

In order to check whether the object is empty or not use this code.

if (Object.keys(object_name).length > 0) {

  // Your code

}

Upvotes: -2

Amr
Amr

Reputation: 5159

Here is a another good answer I found and wanted to share (after modification to fit my needs):

if ("property_name" in object_name && object_name.property_name !== undefined){
   // code..
}

So if I wanted to apply this on my example, it will look like:

if ("error_1" in errors && errors.error_1 !== undefined){
   // code..
}

Upvotes: 3

AhmadAssaf
AhmadAssaf

Reputation: 3654

if (errors.hasOwnProperty('error_1') && errors['error_1'] )

The method hasOwnProperty can be used to determine whether an object has the specified property as a direct property of that object.

The errors[key] where key is a string value checks if the value exists and is not null

to Check if its not empty where it is a string then typeof errors['error_1'] === 'string' && errors['error_1'].length where you are checking for the length of a string

Result:

if (errors.hasOwnProperty('error_1') && typeof errors['error_1'] === 'string' && errors['error_1'].length)

Now, if you are using a library like underscore you can use a bunch of utility classes like _.isEmpty _.has(obj,key) and _.isString()

Upvotes: 32

Phil
Phil

Reputation: 164731

To precisely answer your question (exists and not empty), and assuming you're not referring to empty arrays, you could use

typeof errors.error_1 === 'string' && errors.error_1.length

Upvotes: 3

Related Questions