检查JavaScript对象

时间:2017-01-23 18:30:53

标签: javascript

在JavaScript中,我正在构建一个对象。在循环中我需要检查根对象是否已经包含子对象,如果没有,我需要添加它。

childObjectName = this.name.split('.')[1];

现在,我如何检查我的根对象myObject是否已经包含childObjectName中包含的名称的子项?

修改

我想也许我的OP不是很清楚。对不起。

让我们说childObjectName最终的值为#34; ThisName"。现在,我想查看myObject是否已经包含名为" ThisName"的子对象。因为这是一个循环,我需要能够检查任何名称。

我希望这更有意义吗?

编辑2:

{  
   "myObject":{  
      "CampaignType":{  
         "Exclusive":25,
         "Shared":6
      }
   }
}

好的,现在,让我们说var childObjectName等于" CampaignType"。在这种情况下,我需要在looing时获取TRUE以查看myObject是否包含childObjectName

但是,让我们说childObjectName等于" FooBar"。在这种情况下,我需要得到FALSE。

4 个答案:

答案 0 :(得分:2)

像这样的东西。如果对象中不存在属性,则返回undefined。因此,您基本上需要检查对象上是否存在属性。

if(! myObject[childObjectName])
{
  myObject.childObjectName = this.name.split('.')[1];
}

答案 1 :(得分: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 + '"');
  }
}




答案 2 :(得分:0)

childObjectName = childObjectName || this.name.split('.')[1];

如果属性存在(并且其值是真实的),则其值不会更改,否则将为其赋值。这可以应用于root的属性。

请注意,如果属性存在并且它具有假值,则这可能不起作用。

更新编辑: 如果您需要为任意属性设置此代码,并且您的代码在根级别运行,请使用 this 来引用root:

Object.getOwnPropertyNames(this); // Now you have an array of properties set on root.

答案 3 :(得分:0)

var childObjectName = this.name.split('.')[1];
if(myobject[childobjectName]){
   //the child object is present
 }else{
 //the child object is not present
 }