admin管理员组

文章数量:1394160

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?

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?

Share Improve this question asked Feb 17, 2015 at 0:12 AmrAmr 5,1396 gold badges51 silver badges68 bronze badges 3
  • 2 Are those error messages going to be only string always? – user2575725 Commented Feb 17, 2015 at 0:38
  • @Arvind In my case, they will be only strings. But if you ask to provide some solution for other data types, then that will be great, as me and the others will be able to use what fits for them. – Amr Commented Feb 17, 2015 at 0:51
  • What does "not empty" mean? Object properties are initialised to the supplied value, their default or undefined when created, so are never "empty". – RobG Commented Feb 17, 2015 at 1:02
Add a comment  | 

4 Answers 4

Reset to default 32

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()

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

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..
}

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

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

  // Your code

}

本文标签: In JavaScriptHow to determine if an object property exists and is not emptyStack Overflow