在 Javascript 中访问多维对象时使用通配符

Cam*_*ott 5 javascript arrays json multidimensional-array geojson

我正在使用格式如下的 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力解决如何访问这些嵌套对象的问题。例如,我可以使用feature.properties.member[112][21168]来访问该party属性。然而:

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

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

Eri*_* F. 7

如果第二个数字是唯一的嵌套对象,您可以使用builtin 找到该数字Object.keys(obj),如下所示:

var obj = feature.properties.member[112],
    key = Object.keys(obj)[0],
    party = obj[key].party
Run Code Online (Sandbox Code Playgroud)

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