选择其中嵌套了另一个具有特定值的对象的JSON对象?

时间:2019-02-09 11:53:03

标签: javascript json

我的JSON是这样的(有效,太长了,所以我只粘贴其中的一部分):

const world = {
  "object": {
    "countries": {
      "type": "GeometryCollection",
      "geometries": [{
          "type": "Polygon",
          "id": 4,
          "arcs": [
            [
              297,
              298,
              299,
              300,
              301,
              302
            ]
          ]
        },
        {
          "type": "MultiPolygon",
          "id": 24,
          "arcs": [
            [
              [
                303,
                304,
                211,
                305
              ]
            ],
            [
              [
                213,
                306,
                307
              ]
            ]
          ]
        },
        {
          "type": "Polygon",
          "id": 8,
          "arcs": [
            [
              308,
              248,
              309,
              310,
              311
            ]
          ]
        }
      ]
    }
  }
}

这基本上是一个国家/地区列表,每个国家/地区都有自己的ID。

现在,我可以按world.objects.countries来选择所有国家,但是我需要选择具有特定ID的国家,而不是全部{ID {1}}或"id":24。 >

我想我需要使用过滤器来过滤其中具有特定ID的国家/地区?我真的只是一个初学者,发现的解决方案是使用jQuery过滤的,而不是普通的javascript。

1 个答案:

答案 0 :(得分:0)

我猜每个“几何”都代表一个国家。然后:

const world = {
objects: {
"countries":{
         "type":"GeometryCollection",
         "geometries":[
            {
               "type":"Polygon",
               "id":4,
               "arcs":[
                  [
                     297,
                     298,
                     299,
                     300,
                     301,
                     302
                  ]
               ]
            },
            {
               "type":"MultiPolygon",
               "id":24,
               "arcs":[
                  [
                     [
                        303,
                        304,
                        211,
                        305
                     ]
                  ],
                  [
                     [
                        213,
                        306,
                        307
                     ]
                  ]
               ]
            },
            {
               "type":"Polygon",
               "id":8,
               "arcs":[
                  [
                     308,
                     248,
                     309,
                     310,
                     311
                  ]
               ]
            }
      ]
}
}
}

const result = world.objects.countries.geometries.filter(g => [4, 24].includes(g.id))
console.log(result)

filter功能被使用。