如何检查json对象的子属性是否为空?虽然firefox认识到它,但Chrome和IE 8却没有。
我有一个像这样的json对象:
centralData.phone.id;
centralData.address.id;
centralData.product.id;
//and many others
我想检查一下它的某些属性是否为空。我这样做是有效的:
if(centralData.phone != null){
//Do things
}
但这不,因为我并不总是有一个StockGroup
if(centralData.product.StockGroup != null){
//Error
}
那么,我如何检查centralData.product.StockGroup
是否为空?
答案 0 :(得分:4)
我想你会检查属性是undefined
而不是
if(typeof (centralData.product || {}).StockGroup) !== "undefined") {
/* do something */
}
这种支票was described on ajaxian网站,整体代码更短
答案 1 :(得分:1)
您不想检查它是否为null
,您想要检查该属性是否存在(在这种情况下它将是undefined
)。您的检查有效,因为您使用的是==
而不是===
,它可以在不同类型(undefined == null
,但undefined !== null
)之间进行转换。
如果要检查嵌套属性,则需要检查每个级别。我建议使用in
运算符,因为它检查属性是否存在并忽略它的值。
这可以做你想做的事:
if("product" in centralData && "StockGroup" in centralData.product){
…
}
答案 2 :(得分:0)
尝试将对象与undefined进行比较,而不是使用null。
答案 3 :(得分:0)
由于JavaScript使用lazy evaluation,您可以执行此类检查而不会影响性能:
if(centralData.product != null && centralData.product.StockGroup != null){
}