2

ここには2つの配列があり、最初の配列を2番目の配列のような形式に変換する必要があります...

最初の配列は Google マップからのルート案内なので、次response.routes[0].overview_pathのようなものを作成します。

An array of LatLngs representing the entire course of this route. The path is simplified in order to make it suitable in contexts where a small number of vertices is required (such as Static Maps API URLs).

コード

[
  new google.maps.LatLng(12.34, 56.789),
  new google.maps.LatLng(87.65, 123.45)
]

だから私はこれを持っています:

[
  [56.789, 12.34],
  [123.45, 87.65]
]

そして、この配列を次の形式の JavaScript で変換する必要があります。

[
  [
    {
      X: 12.34
      Y: 56.789
    },
    {
      X: 87.65,
      Y: 123.45
    }
  ]
]

では、どうすればこれを行うことができますか?何か方法はありますか?XとYで最初の配列を2番目のような形式に変換する方法は?

更新: 私はこれを行います:

tacke = response.routes[0].overview_path;
 rezultat = [tacke.map(function(w) { return {X:w[1], Y:w[0]}; })];

そして今console.log(rezultat);、このコードを生成します:

console.log(rezultat);
[Array[220]]
0: Array[220]
[0 … 99]
0: Object
X: undefined
Y: undefined
__proto__: Object
1: Object
X: undefined
Y: undefined
__proto__: Object
2: Object
X: undefined
Y: undefined
__proto__: Object

ここで X と Y が定義されていないのはなぜですか...

デモ: http://jsbin.com/uTATePe/41コード: http://jsbin.com/uTATePe/41/edit

4

2 に答える 2

3
var olddata = [
  [56.789, 12.34],
  [123.45, 87.65]
]
var newdata = [olddata.map(function(w) { return {X:w[1], Y:w[0]}; })];
于 2013-10-18T15:27:32.100 に答える
2

絶対にforループを使用する必要がある場合は、これにより必要なデータ構造が作成されます。私はまだNirkのソリューションをお勧めします。

var data = [
  [56.789, 12.34],
  [123.45, 87.65]
];

var result = [[]];

for(var i = 0; i < data.length; i++) {
    result[0].push({"X": data[i][0], "Y": data[i][1]});   
}

console.log(JSON.stringify(result));

JSFiddle

于 2013-10-18T15:34:48.317 に答える