2

在这里我有两个数组,我需要将第一个数组转换为第二个数组的格式......

第一个数组是来自谷歌地图的行车路线,所以: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 将第一个数组转换为第二个格式?

更新: 我这样做:

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 回答