как искать в ответе json и сравнивать переменную с существующим значением ключа и получать результаты другого значения ключа - PullRequest
1 голос
/ 02 июня 2011

Я хочу отобразить многоугольник на карте Bing. У меня есть эта часть вниз. Мне интересно, как мне получить доступ к значению из другого ключа в моем ответе json, как только я определю, к какому из братьев и сестер ключа я пытаюсь получить доступ?

У меня есть эта переменная на странице:

var = 273972;

Я хочу сопоставить эту переменную с polygons.sections.id [] в моем ответе json, взять одноуровневое значение COORDS и сохранить это значение в новом varaible.

У меня есть jquery и _underscore.js.

Вот мой JSON

"polygons":[
    {
        "id":46327,
        "name":"first set",
        "sections":[
            {
            "id":"273971",
            "name":"202",
            "coords":[[-63.675505883656555,-90.3515625],[-63.908396220031165,-90.439453125]]
            },
            {
            "id":"273972",
            "name":"203",
            "coords":[[-63.675505883656555,-90.3515625],[-63.908396220031165,-90.439453125]]
            },
            {
            "id":"273973",
            "name":"204",
            "coords":[[-63.675505883656555,-90.3515625],[-63.908396220031165,-90.439453125]]
            }
        ]
    }
]

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Предполагая, что ваша переменная имеет имя id:

var coords = _.detect(polygons[0].sections, 
                      function(val) { return val.id == id; }).coords;

См. Пример →

0 голосов
/ 02 июня 2011

Я не уверен, что это то, что вы ищете или нет.

var jsonObj = $.parseJSON('{"polygons":[{"id":46327,"name":"first set","sections":[{"id":"273971","name":"202","coords":[[-63.675505883656555,-90.3515625],[-63.908396220031165,-90.439453125]]},{"id":"273972","name":"203","coords":[[-63.675505883656555,-90.3515625],[-63.908396220031165,-90.439453125]]},{"id":"273973","name":"204","coords":[[-63.675505883656555,-90.3515625],[-63.908396220031165,-90.439453125]]}]}]}');

var sections = jsonObj.polygons[0].sections;
for (var i = 0; i < sections.length; i++) {
    if (sections[i].id == "273972") {
        alert(sections[i].coords);
    }
}
...