2015-10-17 56 views
0

我正在學習如何對我正在嘗試構建的項目編碼。從數組中獲取子類

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),它可以根據搜索項有所不同長度:所以繼承人一些JavaScript我正在與谷歌地圖API執行的代碼段。某些搜索字詞只會返回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是長度的no。特定搜索詞中的字段(j是那個數字)?

+1

嗯,'無功j = address_components.length'? – adeneo

+1

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

+0

似乎有效。只是想方設法將所有內容放入輸出中。相當累,所以我會在明天發佈修改後的代碼作爲答案。感謝您的幫助。 –

回答

0

OK,所以我做了以下解決了這個問題:

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