检查属性是否存在与检查是否为空

问题描述:

难以检查JSON对象中是否存在属性与检查属性是否为空?检查属性是否存在与检查是否为空

你可以同时做两个吗?

+0

你能具体吗? – randominstanceOfLivingThing

+0

http://stackoverflow.com/questions/6384421/check-whether-a-value-exists-in-json-object –

+0

如果一个属性为null,那么它就是'=== null''。如果它没有在JSON对象上设置,那么它是'=== undefined'。 –

您可以使用hasOwnProperty(prop)来确定属性是否存在。

var a = { p: null }; 
a.p == null; // true 
a.hasOwnProperty('p'); // true 
+0

你也可以提到'in'运算符。 a中的'p' – zerkms

,用于检查属性是否存在的语法是:

if ('prop' in obj) 

if (obj.hasOwnProperty('prop')) 

检查属性是否为空的语法是:

if (obj.prop === null) 

一般情况下你不能在一个单一操作。如果该物业不存在,obj.prop将为undefined,因此=== null将为false。

但是,在很多情况下,您事先知道房产将包含什么样的价值。如果你知道,如果它存在,它将永远是一个truthy值,你可以简单的写:

if (obj.prop) 

一个共同的情况下发生这种情况是当属性总是包含一个对象。我们可以利用这样的成语如下:

if (obj && obj.prop && obj.prop.subprop && obj.prop.subprop.number == 3)