检查属性中是不是存在对象[重复]
Posted
技术标签:
【中文标题】检查属性中是不是存在对象[重复]【英文标题】:Check is object exists in property [duplicate]检查属性中是否存在对象[重复] 【发布时间】:2018-01-01 17:57:56 【问题描述】:我正在尝试查看该属性是否包含另一个对象。
我有这个:
"prop1": "value",
"prop2": "value",
"prop4": "value",
"prop5":
"innerprop1": "value",
"innerprop2": "value"
,
"prop6":
"innerprop3": "value",
"innerprop4": "value"
我想知道任何属性中是否有对象。
任何帮助将不胜感激。
【问题讨论】:
obj[property].Constructor === Object 可以解决问题 【参考方案1】:请检查prop7
obj =
"prop1": "value",
"prop2": "value",
"prop4": "value",
"prop5":
"innerprop1": "value",
"innerprop2": "value"
,
"prop6":
"innerprop3": "value",
"innerprop4": "value"
,
"prop7": [] // Also an object!
for(var key in obj)
if(typeof obj[key] === 'object')
console.log(key)
【讨论】:
【参考方案2】:var yourObject=
"prop1": "value",
"prop2": "value",
"prop4": "value",
"prop5":
"innerprop1": "value",
"innerprop2": "value"
,
"prop6":
"innerprop3": "value",
"innerprop4": "value"
if(typeof yourObject.prop5=='object')
console.log("It is object")
if (typeof yourobject.prop5=='object')
【讨论】:
【参考方案3】:尝试使用typeof()
方法和Object.values
Object.values
为值创建数组,Array.map()
重新创建带有条件的数组 typeof(a) == 'object'
var arr = "prop1": "value", "prop2": "value", "prop4":"value", "prop5": "innerprop1": "value","innerprop2": "value" , "prop6": "innerprop3":"value", "innerprop4": "value"
//returning the keyname
console.log(Object.keys(arr).filter(a=> typeof(arr[a]) == 'object' ))
var res = Object.values(arr).map(function(a)
return typeof(a) == 'object'
)
console.log(res)
【讨论】:
【参考方案4】:您可以使用typeof
函数,该函数将为对象返回object
var json = ' "prop1": "value", "prop2": "value", "prop4": "value", "prop5": "innerprop1": "value", "innerprop2": "value" , "prop6": "innerprop3": "value", "innerprop4": "value" ';
jsonObject = JSON.parse(json);
var keys = Object.keys(jsonObject);
keys.forEach(function(element)
console.log(typeof(jsonObject[element]));
)
【讨论】:
以上是关于检查属性中是不是存在对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章