2015-10-17 2 views
0

Я изучаю, как кодировать проект, который я пытаюсь создать. Так Heres фрагмент некоторого JavaScript, что я исполняющим с Google Maps API:Получение подкласса из массива

for (i = 0; i < results.length; i++) { 


    console.log("Formatted Address: "+ results[i].formatted_address + "\n" + 
     "Geometry: "+ results[i].geometry.location + "\n" + 
     "Types: "+ results[i].types + "\n" + 
     results[i].address_components[0].types + ": " + results[i].address_components[0].long_name + "\n" + 
     results[i].address_components[1].types + ": " + results[i].address_components[1].long_name + "\n" + 
     results[i].address_components[2].types + ": " + results[i].address_components[2].long_name + "\n" + 
     results[i].address_components[3].types + ": " + results[i].address_components[3].long_name + "\n" + 
     results[i].address_components[4].types + ": " + results[i].address_components[4].long_name + "\n" + 
     results[i].address_components[5].types + ": " + results[i].address_components[5].long_name + "\n" + 
     results[i].address_components[6].types + ": " + results[i].address_components[6].long_name + "\n" + 
     results[i].address_components[7].types + ": " + results[i].address_components[7].long_name + "\n" + 
     results[i].address_components[8].types + ": " + results[i].address_components[8].long_name + "\n" + 
     results[i].address_components[9].types + ": " + results[i].address_components[9].long_name 
    ); 

    formattedAddress = results[i].formatted_address; 
    coordinates = results[i].geometry.location; 
    types = results[i].types; 
    // component = results[i].address_components[0].types; 

    no = i+1; 

    output += "<li>"; 
    output += "<p><i>"+ no +"</i></p>" 
    output += "<p><b>"+ formattedAddress +"</b></p>"; 
    output += "<p>"+ coordinates +"</p>"; 
    output += "<p>"+ types +"</p>"; 
    output += "</li>"; 

    //console.log("results for "+ [i] + " :" + output); 
    $("#list-locations").html(output); 
} 

Я пытаюсь читать & вывод адресные компоненты (.types & .long_name), которая может изменяться в длину в зависимости от срока поиска , Некоторые поисковые термины возвращают только 1 тип & long_name, тогда как другие условия поиска могут возвращаться 7 или 8.

В конечном итоге я хочу добавить его в свою выходную переменную.

Вот пример JSON Возврат:

{ 
    "types":["locality","political"], 
    "formatted_address":"Winnetka, IL, USA", 
    "address_components":[{ 
    "long_name":"Winnetka", 
    "short_name":"Winnetka", 
    "types":["locality","political"] 
    },{ 
    "long_name":"Illinois", 
    "short_name":"IL", 
    "types":["administrative_area_level_1","political"] 
    },{ 
    "long_name":"United States", 
    "short_name":"US", 
    "types":["country","political"] 
    }], 
    "geometry":{ 
    "location":[ -87.7417070, 42.1083080], 
    "location_type":"APPROXIMATE" 
    }, 
    "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" 
} 

В этом примере address_components[2].long_name вернется "Соединенные Штаты", в то время как address_components[3].long_name вернется undefined.

Как добавить счетчик, чтобы ... address_components[j].long_nam e - длина нет. полей в конкретном поисковом выражении (j - это номер)?

+1

Эмм, 'вар j = address_components.length'? – adeneo

+1

'var j = address_components.length -1' – localghost

+0

Кажется работать. Просто заставляя меня задуматься о том, как разместить весь контент на выходе. Скорее устал, поэтому завтра я отправлю свой обновленный код. Спасибо за помощь в этом. –

ответ

0

ОК, так что я решил эту проблему, выполнив следующие действия:

for (i = 0; i < results.length; i++) { 

    formattedAddress = results[i].formatted_address; 
    coordinates = results[i].geometry.location; 
    types = results[i].types; 

    no = i+1; 

    output += "<li>"; 
    output += "<H1><i>"+ no +"</i></H1>" 
    output += "<p><b>"+ formattedAddress +"</b></p>"; 
    output += "<p>"+ coordinates +"</p>"; 
    output += "<p>"+ types +"</p>"; 
    for (j = 0; j < results[i].address_components.length; j++) { 
     comp = results[i].address_components[j].types; 
     compCont = results[i].address_components[j].long_name; 
     output += "<p>"+ comp +": " + compCont +"</p>"; 
    } 
    output += "</li>"; 

    $("#list-locations").html(output); 
} 

По @localghost комментариев, если бы я пошел меньше или равно я бы нужен -1

Смежные вопросы