使用javascript排列JSON对象数组中属性的位置

使用javascript排列JSON对象数组中属性的位置,javascript,arrays,json,google-maps,Javascript,Arrays,Json,Google Maps,我有一个巨大的物体阵列,看起来像这样: var obj = [ {longitude: lng1, latitude: lat1}, {longitude: lng2, latitude: lat2} ] 我需要一个javascript函数,它允许我在数组中排列每个对象属性的位置,如下所示: var switchedObj = [ {latitude: lat1, longitude: lng1}, {latitude: lat2, longitude: lng2} ] 有人

我有一个巨大的物体阵列,看起来像这样:

var obj = [
  {longitude: lng1, latitude: lat1},
  {longitude: lng2, latitude: lat2}
]
我需要一个javascript函数,它允许我在数组中排列每个对象属性的位置,如下所示:

var switchedObj = [
  {latitude: lat1, longitude: lng1},
  {latitude: lat2, longitude: lng2}
]
有人能给我指出正确的方向吗?

谢谢。

这里有一个有效的解决方案。假设我们有lng1、lat1、lng2和lat2的值

基本上,假设我们有这个对象:

var obj = [
{longitude:10,latitude:100},
{longitude:20, latitude:200}
]
然后,为了得到解决方案,你需要简单地这样做。希望有帮助

var obj=[
{经度:10,
纬度:100
},
{经度:20,
纬度:200
}
]
var arr1=[];
var arr2=[];
var switchedObj=[];
用于(obj中的var i){
if(obj[i].hasOwnProperty(“经度”)和&obj[i].hasOwnProperty(“纬度”)){
arr1.push(对象[i][“经度”];//10和20
arr2.推力(obj[i][“纬度]);
}
}
对于(变量k=0;k受d3.js函数启发:

var obj = [
  {longitude: 1, latitude: 2},
  {longitude: 3, latitude: 4}
]

var permute = function(object) { 
  var i = Object.keys(object[0]).length; // ["latitude", "longitude"], length = 2
  var switchedObj = new Array(i);

  while (i--) switchedObj[i] = object[i]; // go through obj in reverse order 
                                          // and assign values to new obj
  return switchedObj;
};

permute(obj); 
// => [
//  {latitude: 2, longitude: 1},
//  {latitude: 4, longitude: 3}
// ]

您需要一个for循环,该循环以您想要的顺序返回带有键的对象。这是地图的素数,如下所示。不幸的是,JS规范中没有要求对象的属性保持相同的顺序。实际上,他们通常是这样做的。但我不相信这一点

var switchedObj = obj.map(coords => 
  ({latitude: coords.latitude, longitude: coords.longitude})
);
编辑:对于使用旧版本JavaScript的用户:

var switchedObj = obj.map(function(coords) {
  return {
    latitude: coords.latitude,
    longitude: coords.longitude,
  };
});

排列位置
-是否要交换经度和纬度属性的顺序?我可以问一下,这会有什么不同吗?这两个对象将具有相同的属性。结果是,javascript对象属性没有“顺序”的概念,因为没有理由这样做,所以Having说,属性的顺序(当通过JSON.stringify输出时)似乎可以控制-
var switchedbj=obj.map(函数(项){return{latitude:item.latitude,longitude:item.longitude});log(JSON.stringify(switchedbj))-您将看到输出的属性按您想要的顺序排列-现在在Firefox、Chrum、IE和Edge中进行了测试-所有这些属性的行为都是相同的hi@JaromandaX谢谢您的回答。我以后再试试。我之所以需要它,是因为某些框架希望您以特定的顺序定义对象,否则它将无法工作。我知道,一般来说,javascript没有顺序的概念,但是当涉及到第三方框架时,这是一个不同的游戏。我希望您理解我的观点。那么这些第三方框架必须使用JSON字符串作为输入?您不仅仅是将
obj
作为参数传递给函数?如果您是,并且顺序对第三方框架来说“很重要”,请寻找更好的第三方框架:DThanks for your answer@HenryDev。它确实对我有用。