转换数组并反转

时间:2013-10-19 10:01:42

标签: javascript arrays json

这里我有一个代码可以在X和Y格式上转换数组:

所以我的代码:

var tacke = response.routes[0].overview_path,
    newTacke = [[]];
for(var i = 0, len = overviewPath.length; i < len; i++) {
    newTacke[0].push({
       X: tacke[i].lat(),
       Y: tacke[i].lng()
    });
}

会将数组tacke转换为newArray newTacke格式:

TACKE format

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

格式化:

newTACKE format

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

所以现在我需要一个转换解决方案,如果我newTacke转换为旧格式,例如tacke

所以我这样做是为了将var tacke = response.routes[0].overview_path,转换为新格式,

现在我需要以tacke格式支持它,所以就像这样:

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

有没有办法做到这一点?

现在只需newTacketacke数组格式重新生成

4 个答案:

答案 0 :(得分:2)

这将从一个名为Points的所有属性

的类中创建一个JsonArray
Potints= function (x,y){
this.X=x;
this.Y=y;
this.MakeJson=function() {
return JSON.stringify(this);
}
}
var JsonArry=new Array();
for(var i = 0, len = overviewPath.length; i < len; i++) {
  ObjPoints=new Potints(tacke[i].lat(),tacke[i].lng());
  JsonArry.push(ObjPoints.MakeJson());
    });
}

答案 1 :(得分:2)

给出newTackle格式:

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

你可以这样回到原来的格式:

tackle  = newTackle[0].map(function(k){
    return [k.Y, k.X];
});

结果:

 console.log(tackle)
 // [
 //        [56.789, 12.34],
 //        [123.45, 87.65]
 // ]

答案 2 :(得分:1)

在我看来,好像你可以访问newTacke的第一个成员,获得一个数组。然后你迭代那个数组得到各种夫妻:

// pseudo code

oldTacke = []
for pair in newTacke[0]   # we iterate on [{X Y} {X Y} {X Y}]:
    # pair is now { X Y }
    oldTacke.append([ pair.X, pair.Y ])

答案 3 :(得分:1)

你的问题让我感到困惑..反正..如果你的newTacke就像下面的格式那样..这会有效..

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

oldTacke = [] ;

newTacke.forEach(function (el,i,arr) {
  oldTacke.push([el[0].X, el[0].Y] , [el[1].X, el[1].Y] ) ;
});
console.log(oldTacke); // [[12.34, 56.789], [87.65, 123.45]]

如果这不是你所期望的......请澄清你的答案..