繁体   English   中英

检查子对象是否存在于JavaScript对象中

[英]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 它与所有浏览器兼容,即使该属性具有虚假值(例如nullfalse等),它也可以工作。

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM