私はオブジェクトトラバーサルに関する質問を解決しようとしています。オブジェクトがかなり大きくなる可能性があるので、再帰が必要だと思います。一方向に進むプロパティに基づいてオブジェクトを横断し、別の方向に進む別の方向に向かうオブジェクトを横断しながら、各ルートに対して別々の配列結果を作成したいと考えています。交差点を通り、多くの道を行く通りがあるかもしれないので、拡大縮小が必要です。私はルートを保存するために、グローバル変数を使用するか、引数としてルートを運ぶために必要がある場合は、それらをプッシュしすぎてわからないJavascript jQueryオブジェクトのトラバーサル
Traverse the From -> To
[
{ “block”:”West Block”, “from”:”Ham St”, “to”:”Union St” },
{ “block”:”West Block”, “from”:”Union St”, “to”:”Graph St” },
{ “block”:”South Block”, “from”:”Graph St”, “to”:”Back St” },
{ “block”:”South Block”, “from”:”Graph St”, “to”:”Rory St” },
{ “block”:”South Block”, “from”:”Rory St”, “to”:”Friend St” },
{ “block”:”South Block”, “from”:”Back St”, “to”:”Front St” },
{ “block”:”South Block”, “from”:”Friend St”, “to”:”Foe St” }
]
…
Result would look like:
[Ham St, Union St, Graph St, Back St, Back St, Front St],
[Ham St, Union St, Graph St, Rory St, Friend St, Foe St]
And another but going the opposite way.
Traverse the To -> From
[
{ “block”:”West Block”, “from”:”Bark St”, “to”:”Ham St” },
{ “block”:”West Block”, “from”:”Upper St”, “to”:”Bark St” },
{ “block”:”West Block”, “from”:”Bacon St”, “to”:”Upper St” },
{ “block”:”West Block”, “from”:”Heath St”, “to”:”Bacon St” },
{ “block”:”West Block”, “from”:”East St”, “to”:”Heath St” },
{ “block”:”North Block”, “from”:”Wood St”, “to”:”Bark St” },
{ “block”:”North Block”, “from”:”Win St”, “to”:”Wood St” },
{ “block”:”North Block”, “from”:”High St”, “to”:”Win St” },
{ “block”:”North Block”, “from”:”Stone St”, “to”:”High St” },
]
…
Result would look like.
[Ham St, Bark St, Upper St, Bacon St, Heath St, East St],
[Ham St, Bark St, Wood St, Win St, High St, Stone St]
:結果は...
例(ルート)多くのルートかもしれませんグローバル配列に?
var stoproutes = [];
var stops = 6;
function walkObj(routes,stop,route,n){
var arr = $.grep(routes,function(r){ return r.to === stop['to'] || r.from === stop['from'] });
$.each(arr,function(i,v){
// figure out if its from -> to, or to -> from
if(v['from'] === stop['from']){
// from -> to, outbound
route[i].push(v['to']);
} else {
// from <- to, inbound
route[i].push(v['from']);
}
if(n<stops){
walkObj(routes,v,route,n+1);
} else {
stoproutes.push(route);
}
});
}
walkObj(routes,'Ham St',[],0);
ツリーは保存の良い方法wouldntのそのような場合は? –
私はそれも良いアプローチだと思います。私は以前それをしていない。どのようにそれを開始するためのアドバイス?実際に、私はまず木について考えましたが、それをどうやって作るのかは分かりませんでした。私は紙でそれを描くことができますが、それをコード化する方法について考える必要があります。 – Paul