在Javascript中,如何确定对象属性是否存在且不为空?

时间:2015-02-17 00:12:55

标签: javascript

假设我有下一个javascript对象:

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

如何确定error_1对象中是否存在属性errors,并且该属性也不为空?

4 个答案:

答案 0 :(得分:12)

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

方法hasOwnProperty可用于确定对象是否具有指定属性作为该对象的直接属性。

其中errors[key]是字符串值的key检查值是否存在且不为空

检查字符串是否为空,然后typeof errors['error_1'] === 'string' && errors['error_1'].length检查字符串的长度

结果:

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

现在,如果你使用像underscore这样的库,你可以使用一堆实用程序类,如_.isEmpty _.has(obj,key)_.isString()

答案 1 :(得分:3)

要准确回答您的问题(存在而非空),并假设您没有引用空数组,您可以使用

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

答案 2 :(得分:2)

这是我found又想要分享的另一个好答案(经过修改以满足我的需求):

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

因此,如果我想在我的示例中应用它,它将如下所示:

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

答案 3 :(得分:0)

为了检查对象是否为空,请使用此代码。

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

  // Your code

}