使用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。它确实对我有用。