2016-06-22 3 views
1

私はいくつかのランダムな都市名からなる配列を持っています、個々の都市のソースとデスティネーションからなる別の配列のjsonオブジェクトですが、個々の都市のこのルート配列は連続していません。私は、ロジックを作ることができません、彼らは訪問した順に順番にそれをする必要があり..都市の..JavascriptでJson Arrayからルートパスを作成するには?

アレイ(ダイナミックサイズ)助けてください:ルートの

var CITIES = ["PARIS","LONDON","DELHI","SINGAPORE","DUBAI"] 

JSON配列を(ランダムシーケンスで):

var CITY_ROUTE = {"ROUTE":[ 
 
{"CURRENT_CITY":"PARIS","NEXT_CITY":"LONDON","PREVIOUS_CITY":"DUBAI",}, 
 
{"CURRENT_CITY":"DELHI","NEXT_CITY":"SINGAPORE","PREVIOUS_CITY":"LONDON"}, 
 
{"CURRENT_CITY":"LONDON","NEXT_CITY":"DELHI","PREVIOUS_CITY":"PARIS"}, 
 
{"CURRENT_CITY":"SINGAPORE","NEXT_CITY":"","PREVIOUS_CITY":"DELHI"}, 
 
{"CURRENT_CITY":"DUBAI","NEXT_CITY":"PARIS","PREVIOUS_CITY":""} 
 
]}; 
 

 
/Required to Rearange the Json Object in Visiting sequence where Starting City will have null PREVIOUS_CITY value and Last City will have null NEXT_CITY Value/ 
 

 

 
var CITY_ROUTE_IN_SEQUENCE = {"ROUTE":[ 
 
{"CURRENT_CITY":"DUBAI","NEXT_CITY":"PARIS","PREVIOUS_CITY":""} 
 
{"CURRENT_CITY":"PARIS","NEXT_CITY":"LONDON","PREVIOUS_CITY":"DUBAI",}, 
 
{"CURRENT_CITY":"LONDON","NEXT_CITY":"DELHI","PREVIOUS_CITY":"PARIS"}, 
 
{"CURRENT_CITY":"DELHI","NEXT_CITY":"SINGAPORE","PREVIOUS_CITY":"LONDON"}, 
 
{"CURRENT_CITY":"SINGAPORE","NEXT_CITY":"","PREVIOUS_CITY":"DELHI"} 
 
]};

+1

まあ、それは '空を持っているエントリのように思えるPREVIOUS_CITY'プロパティを最初にする必要があります。次に、 'NEXT_CITY'に基づいてそれらを連鎖させることができます。 (データにサイクルがある場合は、それはより困難な問題ですが、ここには表示されません)。 –

答えて

0

さてあなたは、最初のノードはCIが含まれています。..フォームリンクリストの何かを試みることができます最後のノードにはNEXT_CITY nullが設定されます。リンクされたリストでそれらを呼び出すと、簡単にそれらを印刷できます。

第1ノードドバイ - >第2パリ - >第3ロンドン - >第4ノードデリー - >第5回シンガポール

前の都市をチェックする必要がある場合..あなたは、二重リンクリストを使用することができます。.. JS

にリンクリストを実装する方法を

http://code.tutsplus.com/articles/data-structures-with-javascript-singly-linked-list-and-doubly-linked-list--cms-23392

あなたを伝えるリソースが あり
0

ありがとう@TedHopp ...効率的ではありませんが、仕事をしています。

var SortedArray=[]; 
 
var CITY_ROUTE = {"ROUTE":[ 
 
{"CURRENT_CITY":"PARIS","NEXT_CITY":"LONDON","PREVIOUS_CITY":"DUBAI",}, 
 
{"CURRENT_CITY":"DELHI","NEXT_CITY":"SINGAPORE","PREVIOUS_CITY":"LONDON"}, 
 
{"CURRENT_CITY":"LONDON","NEXT_CITY":"DELHI","PREVIOUS_CITY":"PARIS"}, 
 
{"CURRENT_CITY":"SINGAPORE","NEXT_CITY":"","PREVIOUS_CITY":"DELHI"}, 
 
{"CURRENT_CITY":"DUBAI","NEXT_CITY":"PARIS","PREVIOUS_CITY":""} 
 
]}; 
 

 
for(var index in CITY_ROUTE.ROUTE) 
 
{ 
 
\t if(CITY_ROUTE.ROUTE[index].PREVIOUS_CITY == "") 
 
    { 
 
    var NextCity = CITY_ROUTE.ROUTE[index].NEXT_CITY; 
 
    SortedArray.push(CITY_ROUTE.ROUTE[index]) 
 
    CITY_ROUTE.ROUTE.splice(index,1); 
 
    while(CITY_ROUTE.ROUTE.length>0) 
 
    { 
 
    \t \t for(var i in CITY_ROUTE.ROUTE) 
 
\t \t \t \t { 
 
     \t if(CITY_ROUTE.ROUTE[i].CURRENT_CITY === NextCity) 
 
      { 
 
      SortedArray.push(CITY_ROUTE.ROUTE[i]) 
 
      NextCity = CITY_ROUTE.ROUTE[i].NEXT_CITY; 
 
      CITY_ROUTE.ROUTE.splice(i,1); 
 
      } 
 
     } \t \t \t 
 
    } 
 
    } 
 
} 
 
console.log(SortedArray.length) 
 
console.log(CITY_ROUTE.ROUTE.push(SortedArray)) 
 
console.log(JSON.stringify(CITY_ROUTE.ROUTE))

0

この $アヤックスを試してみてください({

type: "POST", 
url: "<?php print $this->Url ?>index.php/employee/addemployee/viewrole,//your URL 

data: {'CITY_ROUTE': CITY_ROUTE,'CITY_ROUTE_IN_SEQUENCE',CITY_ROUTE_IN_SEQUENCE}, 
success: function (response) { 
var data = jQuery.parseJSON(response); 

} 

                     } 
                    }); 
1

var CITY_ROUTE = { 
 
    "ROUTE": [ 
 
     {"CURRENT_CITY":"PARIS","NEXT_CITY":"LONDON","PREVIOUS_CITY":"DUBAI",}, 
 
     {"CURRENT_CITY":"DELHI","NEXT_CITY":"SINGAPORE","PREVIOUS_CITY":"LONDON"}, 
 
     {"CURRENT_CITY":"LONDON","NEXT_CITY":"DELHI","PREVIOUS_CITY":"PARIS"}, 
 
     {"CURRENT_CITY":"SINGAPORE","NEXT_CITY":"","PREVIOUS_CITY":"DELHI"}, 
 
     {"CURRENT_CITY":"DUBAI","NEXT_CITY":"PARIS","PREVIOUS_CITY":""} 
 
    ] 
 
}; 
 

 
var map = {}; 
 
var point = ''; 
 
CITY_ROUTE.ROUTE.forEach(r => { 
 
    map[r.CURRENT_CITY] = r; 
 
    if (!r.PREVIOUS_CITY) { 
 
     point = r.CURRENT_CITY; 
 
    } 
 
}); 
 

 
CITY_ROUTE.ROUTE = []; 
 
while(point) { 
 
    CITY_ROUTE.ROUTE.push(map[point]); 
 
    point = map[point].NEXT_CITY; 
 
} 
 
console.log(JSON.stringify(CITY_ROUTE));

関連する問題