如何检查我的JSON中是否存在subproducts
对象?
"products":[
{
"id":5002,
"description":"i dont know",
"position":1,
"weight":1,
"subproducts":{
"name":"test",
"description":"description of test"
}
}
],
每当我使用if(product.subproducts)
和product.subproduct.name
时,它都会让我返回true,而$.each(company.products, function (j, product) {
if(product.hasOwnProperty('subproducts') {
//do something
} else {
// do this
}
}
和{{1}}无法读取未定义的name属性。
{{1}}
更新:忘了说,对于每种产品,都包含或不包含副产品。
答案 0 :(得分:1)
我想你应该试试这个:
products[0].hasOwnProperty('subproducts')
答案 1 :(得分:0)
看来,当你说副产品不存在时,它确实存在作为一个对象,但没有属性。在JavaScript中,没有属性的对象仍然被认为是真实的,这就是为什么它总是传递你的真实条件,然后如果你试图访问name
属性则抛出未定义的错误。
示例:
var obj = {};
console.log(obj ? true : false); // true
在这种情况下,您可以测试现有的name
:
$.each(company.products, function (j, product) {
if(product.hasOwnProperty('subproducts') {
if(product.subproducts.name){
// it has subproducts AND the subproduct.name exists
}
} else {
// do this
}
}
答案 2 :(得分:-1)
您最好的选择是浏览对象并检查对象:
function hasSubObject(products) {
for(var key in products){
if(!products.hasOwnProperty(key))continue;
if(typeof products[key] === "object") return true;
}
return false;
}
如果您有大型物品,那么这很糟糕,可能会减速