0

私は現在、Google Maps API から返されたウェイポイントの配列をループしています。次の配列では、Xa と Ya というラベルの付いた値にアクセスしたいのですが、現時点ではこの方法で実行しています - [i]["location"]["Xa"]、しかし Xaと Ya は常に同じではなく、aB と aC または Ya と Za などの場合もあります。これらの値にアクセスする一般的な方法はありますか?

[
   {
      "location":{
         "Xa":xx.xxxxxxxxxxxxx,
         "Ya":xx.xxxxxxxxxxxxx
      },
      "stopover":true
   },
   {
      "location":{
         "Xa":xx.xxxxxxxxxxxxx,
         "Ya":xx.xxxxxxxxxxxxx
      },
      "stopover":true
   },
   {
      "location":{
         "Xa":xx.xxxxxxxxxxxxx,
         "Ya":xx.xxxxxxxxxxxxx
      },
      "stopover":true
   },
   {
      "location":{
         "Xa":xx.xxxxxxxxxxxxx,
         "Ya":xx.xxxxxxxxxxxxx
      },
      "stopover":true
   }
]
4

4 に答える 4

1

まず第一に、これはjavascriptオブジェクトです(すべての連想配列は実際にはJavaScriptのオブジェクトです)。

locationオブジェクトに含まれるプロパティが2つだけであることが確実な場合は、for ... inステートメントを使用して、アクセスする最初の要素がX座標で、2番目の要素がY座標であることを確認してください。

参照:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

于 2012-08-11T19:08:10.817 に答える
1

まず第一に、Gautham Badhrinathan が指摘したように、javascript には連想配列はありません。代わりに、それらはオブジェクトです。(サンプル コードは JSON であり、JSON は JavaScript Object Notation を表します)。

次に、.Xa と .Ya は .lat() と .lng() メソッドの名前を縮小したものなので、次のバージョン リリースで変更される可能性があるため、使用しないでください。

第 3 に、locationは既にgoogle.maps.LatLng()オブジェクトであるため、次のように直接使用できます。

for(var i = 0 ; i < yourArray.length ; i++){
    setMarker(yourArray[i].location);

}

function setMarker(latLng){
    var marker = new google.maps.Marker({
        map: map,
        position: latLng
    })
}

最後に、個々の値を本当に読み取る必要がある場合は、次のような文書化されたメソッドを使用する必要があります。

for(var i = 0 ; i < yourArray.length ; i++){
    var lat = yourArray[i].location.lat();
    var lng = yourArray[i].location.lng();

// do something with vars lat and lng
}
于 2012-08-12T06:39:06.907 に答える
0

hasOwnProperty()メソッドを使用してオブジェクトを抽出する前に、オブジェクトに特定のプロパティが存在するかどうかをテストできます。

例: http: //jsfiddle.net/Fd6Ex/6/

于 2012-08-11T19:06:10.857 に答える
0

あなたはこのようにそれを行うことができます:

for(key in tab[i]["location"]) {
    if(tab[i]["location"].hasOwnProperty(key)) {
        console.log(tab[i]["location"][key]);
    }
}
于 2012-08-11T19:06:27.990 に答える