子の値の 1 つに基づいて、配列内の要素を選択しようとしています。
例として、Google Maps API ジオコード リクエストから返された結果を使用すると、次の形式の配列が得られます。
{
"address_components": [
{
"long_name": "Renshaw St",
"short_name": "Renshaw St",
"types": [
"route"
]
},
{
"long_name": "Eccles",
"short_name": "Eccles",
"types": [
"locality",
"political"
]
},
{
"long_name": "Greater Manchester",
"short_name": "Gt Man",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "United Kingdom",
"short_name": "GB",
"types": [
"country",
"political"
]
},
{
"long_name": "M30 0PQ",
"short_name": "M30 0PQ",
"types": [
"postal_code"
]
},
{
"long_name": "Manchester",
"short_name": "Manchester",
"types": [
"postal_town"
]
}
],
"formatted_address": "Renshaw St, Eccles, Manchester, Greater Manchester M30 0PQ, UK",
"geometry": {
"bounds": {
"northeast": {
"lat": 53.48266090000001,
"lng": -2.35206530
},
"southwest": {
"lat": 53.48128999999999,
"lng": -2.35324410
}
},
"location": {
"lat": 53.4822450,
"lng": -2.35294730
},
"location_type": "GEOMETRIC_CENTER",
"viewport": {
"northeast": {
"lat": 53.48332443029150,
"lng": -2.351305719708498
},
"southwest": {
"lat": 53.48062646970850,
"lng": -2.354003680291502
}
}
},
"types": [
"route"
]
}
指定した値と等しいaddress_component->long_name
要素を持つを選択したいと思います。type
array
上記と a key
to find をパラメーターとして取り、うまく機能するように見える次のコードを作成しました。
function getAddressComponent(key, result) {
var rtn;
$.each(result,function(index,value){
if( result[index].types[0] == key ) rtn = result[index].long_name;
});
return rtn;
}
しかし、いくつかの異なる方法で実行されているのを見て、最適な方法を使用したいので、誰かがより良いアプローチを提案できるかどうか疑問に思っていました.