2015-10-17 58 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