【问题标题】:Using wildcards when accessing a multi-dimensional object in Javascript [duplicate]在Javascript中访问多维对象时使用通配符[重复]
【发布时间】:2017-05-27 22:08:55
【问题描述】:

我正在使用格式如下的 GeoJSON 数据集:

{
  "type": "Feature",
  "properties": {
    "startcong": "109",
    "district": "7",
    "statename": "Pennsylvania",
    "member": {
      "112": {
        "21168": {
          "party": "Republican",
          "name": "Meehan, Pat",
          "district": "7"
        }
      },
      "109": {
        "15447": {
          "party": "Republican",
          "name": "Weldon, Curt", "district": "7"}
        },
      "110": {
        "20744": {
          "party": "Democrat",
          "name": "Sestak, Joe",
          "district": "7"
        }
      },
      "111": {
        "20744": {
          "party": "Democrat",
          "name": "Sestak, Joe",
          "district": "7"
        }
      }
    },
    "endcong":
    "112",
    "id": "042109112007"
  }
}

我正在为如何访问这些嵌套对象而苦恼。例如,我可以使用feature.properties.member[112][21168] 来访问party 属性。然而:

  • 第二个编号对象(“21168”)的编号并不总是一致的。
  • 第二个编号的对象始终是唯一的嵌套对象。

有没有办法使用通配符之类的东西访问相同的party 属性?理想情况下,类似于feature.properties.member[112][*].party

【问题讨论】:

    标签: javascript arrays json multidimensional-array geojson


    【解决方案1】:

    如果第二个数字是唯一的嵌套对象,您可以使用内置的Object.keys(obj) 找到该数字是什么,类似于:

    var obj = feature.properties.member[112],
        key = Object.keys(obj)[0],
        party = obj[key].party
    

    遗憾的是,没有用于访问属性的通配符,但您可以相当简单地找到属性名称。

    【讨论】:

      【解决方案2】:

      你要找吗?

      Function find(obj,word){
       if(obj[word]){
        return obj[word];
       }
       for(key in obj){
        if(typeof obj[key]=="Object"){
           var result=find(obj[key],word);
           if(result){
             return result;
           }
        }
        }
        return false;
        }
      

      这样使用:

      party=find(json,"party");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多