2017-09-14 185 views
0
var person = { 
     "name" : "Bronn", 
     "description" : { 
      "occupation" : "guardian knight", 
      "age" : 52 
     } 
    } 

for(var key in person){ 
    if(person[key] == /*contains json object */){ 
     //do something 
    } 
} 

我想循环这个人,并检查它的值是否包含单个数据或其他对象。如何检查一个对象是否包含另一个对象?

+4

这里没有JSON。 – Kaiido

+0

'array'没有在任何地方定义。我们究竟应该在这方面限定“单一数据”? –

回答

1

其示出只是正常对象不JSON.And filter过滤的阵列的object valuestypeof() == object .The长度对象存在或不存在

var person = { 
 
     "name" : "Bronn", 
 
     "description" : { 
 
      "occupation" : "guardian knight", 
 
      "age" : 52 
 
     } 
 
    } 
 
console.log('its contains any object=',Object.values(person).filter(a=> typeof(a) == 'object').length > 0)

1

可以使用映射函数或任何循环,并可以在javascript中使用typeof方法进行检查。

var person = { 
 
    "name": "Bronn", 
 
    "description": { 
 
     "occupation": "guardian knight", 
 
     "age": 52 
 
    } 
 
} 
 

 
Object.keys(person).map(item => { 
 
    if (typeof person[item] == 'object') { 
 
     // your logic here... 
 
     console.log(person[item]); 
 
    } 
 
});

0

简单地检查它的构造像下面

for(var key in person){ 
    if(person[key].constructor == Object){ 
    //do something 
    } 
} 
0

您可以用typeof检查object,但你需要检查的价值为好,因为null是一个对象,一个值。

var person = { foo: null, name: "Bronn", description: { occupation: "guardian knight", age: 52 } }, 
 
    keysOfObjects = Object.keys(person).filter(key => typeof person[key] == 'object'), 
 
    wantedKeys = Object.keys(person).filter(key => person[key] && typeof person[key] == 'object'); 
 

 
console.log(keysOfObjects); 
 
console.log(wantedKeys);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关问题