[英]Check to see if child object exists in JavaScript object
在JavaScript中,我正在构建一个对象。 在循环内,我需要检查根对象是否已经包含一个子对象,如果没有,则需要添加它。
childObjectName = this.name.split('.')[1];
现在,如何检查根对象myObject
已包含childObjectName
包含的任何名称的子对象?
编辑:
我认为我的OP可能不太清楚。 对于那个很抱歉。
假设childObjectName
最终的值为“ ThisName”。 现在,我想检查一下myObject
已经包含一个名为“ ThisName”的子对象。 由于这是一个循环,因此我需要能够检查任何名称。
我希望这更有意义吗?
编辑2:
{
"myObject":{
"CampaignType":{
"Exclusive":25,
"Shared":6
}
}
}
好的,现在,让我们说var childObjectName
等于“ CampaignType”。 在这种情况下,我需要在查看myObject
包含childObjectName
时获得TRUE。
但是,假设childObjectName
等于“ FooBar”。 在这种情况下,我需要获得FALSE。
这样的事情。 如果对象中不存在属性,则它返回undefined
。 因此,您基本上需要检查对象上是否存在该属性。
if(! myObject[childObjectName])
{
myObject.childObjectName = this.name.split('.')[1];
}
您应该使用hasOwnProperty
。 它与所有浏览器兼容,即使该属性具有虚假值(例如null
, false
等),它也可以工作。
var myObject = { propOne: "hello world", propTwo: false, CampaignType: { "Exclusive": 25, "Shared": 6 } }; checkForPropertyName("prop" + "One"); checkForPropertyName("propTwo"); checkForPropertyName("propThree"); checkForPropertyName("CampaignType"); function checkForPropertyName(childObjectName) { if (myObject.hasOwnProperty(childObjectName)) { console.log('myObject has property "' + childObjectName + '"'); } else { console.log('myObject does NOT have property "' + childObjectName + '"'); } }
childObjectName = childObjectName || this.name.split('.')[1];
如果该属性存在(并且其值是真实的),则其值将不会更改,否则将被赋予一个值。 这可以应用于根的属性。
请注意,如果该属性存在且其值是伪造的,则这可能不起作用。
更新以进行编辑:如果您需要为任意属性添加此代码,并且您的代码在根级别运行,则可以使用此来引用根:
Object.getOwnPropertyNames(this); // Now you have an array of properties set on root.
var childObjectName = this.name.split('.')[1];
if(myobject[childobjectName]){
//the child object is present
}else{
//the child object is not present
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.