JavaScript 在 JSON 对象中移动如何判断元素是否存在

javascript moving through json object how to tell if an element is present

本文关键字:判断 元素 存在 是否 何判断 JSON 对象 移动 JavaScript      更新时间:2023-09-26

我正在遍历一个 json 对象,但由于一个额外的元素而失败。

请参阅下面的代码

{
"rootLayout":"main",
"layoutDescriptions":[
      {
        "type":"Panel",
        "label":"Repeating Groups By Subform",
        "layout":"SimpleForm",
        "content":[
          { "type":"label", "constraint":"newline", "text":"Contacts" },
          { "type":"repeatableGroup", "property":"contacts", "contentRef":"ContactSubForm" }
        ]
      },
      {
        "type":"Panel",
        "label":"",
        "container" : {
          "type":"Panel",
          "layout":"SimpleForm",
          "content":[
            { "type":"label", "constraint":"newline", "text":"Contact Name" },
            { "type":"ListView", "property":"contactName", "listProps":["contactName","telephone","email"] }
          ]
        }
      },

它在数组中的第二个元素上失败 我正在使用以下内容来获取结果

data.layoutDescriptions[0].container.content[i].content

我知道它停止了,因为在

data.layoutDescriptions[0].container.content[1].content

它期望

data.layoutDescriptions[0].container.content[1].container.content

所以我的问题是我怎么说如果容器存在,我怎么做这个,否则做这个。

我目前正在尝试这个不起作用。

    var contentObjects = data.layoutDescriptions[0].container.content[1].content;
if(contentObjects.container){
                 alert("container exists");
                 }
                         else{
                  alert("nope");
                  }

谢谢。

使用 hasOwnProperty 来检查对象是否存在自己的属性:

 var contentObjects = data.layoutDescriptions[0].container.content[1];
 if(contentObjects.hasOwnProperty('container'){
     alert("container exists");
 }
 else{
     alert("nope");
 }

问题是并非数组中的每个对象layoutDescriptions都具有属性container 。当你循环访问第一个对象时,它会查找container,找不到任何内容,然后在undefined上搜索content,抛出错误。

此外,在 data.layoutDescriptions[0].container.content[1] 中,您没有 content 属性。 contentObjects设置为undefined,因此contentObjects.container将失败。