2016-07-11 7 views
0

GoogleのMaps APIを使って、オブジェクト内のキーの値を同じオブジェクト内の配列内の値で見つけることができるようにしたい。私は私ができるように、オブジェクトに「street_number」を見つけることができるようにしたい親オブジェクトのキー値を見つけるのに配列の値を使う

results: { 
    address_components [ 
     0: Object: { 
      long_name: "704", 
      short_name: "704", 
      types [ 
       0:"street_number" 
      ] 
     } 
     1: Object {...} 
     2: Object {...} 
     3: Object {...} 
    ] 
    place_id:"8AS8D8F8A881C81DA6S6D8" 
} 

:私はコンソールを表示するために、私のページの「要素を点検」する場合、ここでは、オブジェクト構造の面で示したものですそのオブジェクトにも存在する "704"の対応する値を見つけます。

「address_compenents」内の値は必ずしも同じ順序であるわけではないので、私はそれを見つけるためにはresults[0].address_components[0].long_nameと書くことはできません。私はこのプロジェクトのjavascriptに制限されていますので、その言語の回答は非常に高く評価されます。前もって感謝します!

注:問題の解決に役立つ場合は、lodashやアンダースコアなどのライブラリを使用することに反対していません。

+0

関連質問:[逆ジオコーディングの例では、場所の通りの名前が表示されませんいくつかの地域](http://stackoverflow.com/questions/33656636/reverse-geocoding-example-doesnt-display-the-street-name-of-a-location-in-some) – geocodezip

+0

関連の質問:[Googleマップ:国、都道府県、地域を取得する方法、緯度/経度を指定する都市?](http:// s tackoverflow.com/questions/4013606/google-maps-how-to-get-country-state-province-region-city-given-a-lat-long-va) – geocodezip

答えて

1

最初にfind()を入力し、必要な属性を読み取ります。

応答にstreet_numberが存在しないケースも考えてください。このスニペットではカバーされていません。

var results = { 
 
    address_components: [{ 
 
    long_name: "704", 
 
    short_name: "704", 
 
    types: [ 
 
     "street_number" 
 
    ] 
 
    }, { 
 
    long_name: "100", 
 
    short_name: "100", 
 
    types: [ 
 
     "attribute_a" 
 
    ] 
 
    }, { 
 
    long_name: "200", 
 
    short_name: "200", 
 
    types: [ 
 
     "attribute_b" 
 
    ] 
 
    }, { 
 
    long_name: "300", 
 
    short_name: "300", 
 
    types: [ 
 
     "attribute_c" 
 
    ] 
 
    }], 
 
    place_id: "8AS8D8F8A881C81DA6S6D8" 
 
} 
 

 
var streetNumber = results.address_components.find(function(item) { 
 
    return item.types.some(function(subitem) { 
 
    return subitem === 'street_number' 
 
    }); 
 
}).long_name; 
 

 
console.log(streetNumber); // 704

+0

タイムリーな返答いただきありがとうございます!しかし、私はあなたの答えが私の問題を解決しただろうと尋ねた後、他の場所で答えにつまずいた。ありがとうございました! – Austin

0

はArray.filter()を使用してそれを行うことが可能である

results: { 
    address_components [ 
     0: Object: { 
      long_name: "704", 
      short_name: "704", 
      types [ 
       0:"street_number" 
      ] 
     } 
     1: Object {...} 
     2: Object {...} 
     3: Object {...} 
    ] 
    place_id:"8AS8D8F8A881C81DA6S6D8" 
} 


const result = results.address_components.find(item => item.types.indexOf('street_number') > -1) 

const longName = result.long_name // 704 
const shortName = result.short_name // 704 
関連する問題