假设我有下一个javascript对象:
var errors = {
error_1: "Error 1 description",
error_2: "Error 2 description",
error_3: "",
error_4: "Error 4 description"
};
如何确定error_1
对象中是否存在属性errors
,并且该属性也不为空?
答案 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
}