2016-11-26 8 views
-1

は、だから私はこのようになりますオブジェクトの大規模な配列を持っているJavaScriptでオブジェクト配列内のプロパティは次のようになります。入れ替え位置が

var switchedObj = [ 
    {latitude: lat1, longitude: lng1}, 
    {latitude: lat2, longitude: lng2} 
] 

誰かが正しい方向に向いていますか?
ありがとうございます。

+4

は 'positions'を並べ替える - あなたは経度と緯度のプロパティの順番を入れ替えたい:JavaScriptのの古いバージョンを使っている人のために?私は何の違いがあるのでしょうか? 2つのオブジェクトは同じプロパティを持ちます。結局のところ、javascriptのオブジェクトプロパティには "order"という概念がないので、そうする必要はありません。 –

+0

これは、JSON.stringifyの出力時にプロパティの順序を制御できるように見えることを示しています( 'var switchedObj = obj。 map(function(item){return {緯度:item.latitude、経度:item.longitude}}); console.log(JSON.stringify(switchedObj)); ' - 出力があなたが望む順番でプロパティを持っていることがわかります - Firefox、Chrum、IE、Edgeでテスト済み - すべて同じように動作します –

+0

こんにちは@JaromandaXありがとうあなたの答え。私は後で試してみる。私はそれが必要な理由は、特定のフレームワークは特定の順序でオブジェクトを定義する必要があります、そうでなければ動作しないためです。私は、一般的に、javascriptには順序の概念がないことを知っていますが、第三者のフレームワークが関わっているときは、別のボールゲームです。あなたが私のことを理解してくれることを願っています – AllJs

答えて

1

実用的な解決策があります。 lng1、lat1、lng2、lat2の値があると仮定します。

var obj = [ 
{longitude:10,latitude:100}, 
{longitude:20, latitude:200} 
] 

次に、あなたがこれを行う簡単な必要なソリューションを取得するには:

は基本的に私たちは、このオブジェクトを持って言うことができます。それが役に立てば幸い! d3.js permute機能に触発さ

var obj = [ 
 
{longitude:10, 
 
latitude:100 
 
}, 
 

 
{longitude:20, 
 
latitude:200 
 
} 
 
] 
 

 
var arr1 = []; 
 
var arr2 = []; 
 
var switchedObj = []; 
 
for(var i in obj){ 
 
\t if(obj[i].hasOwnProperty("longitude") && obj[i].hasOwnProperty("latitude")){ 
 
\t \t arr1.push(obj[i]["longitude"]); // 10 and 20 
 
\t \t arr2.push(obj[i]["latitude"]); 
 
\t } 
 
} 
 
for(var k = 0; k < obj.length; k++){ 
 
     switchedObj.push({ 
 
     latitude: arr2[k], 
 
     longitude: arr1[k] 
 
    }); 
 
} 
 

 
console.log(switchedObj);

+0

答えてくれてありがとう@HenryDev。それは私のために働いた。 – AllJs

+0

@AllJsようこそ!それが助けてくれてうれしい。 – HenryDev

0

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} 
// ] 
0

あなたが好きな順にキーを持つオブジェクトを返すループのために必要。これは、以下に示すように、マップのプライムです。残念ながら、JS仕様には、オブジェクトのプロパティが同じ順序で保持されるという要件はありません。実際には、通常そうしています。しかし、私はこれに頼らないだろう。

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

編集:

var switchedObj = obj.map(function(coords) { 
    return { 
    latitude: coords.latitude, 
    longitude: coords.longitude, 
    }; 
}); 
関連する問題