次のデータを並べ替えようとしています。
var data = [
{ path: '/a', order: 0 },
{ path: '/b', order: 1 },
{ path: '/a/d', order: 1 },
{ path: '/a/c', order: 0 }
];
の中へ:
var expected = [
{ path: '/a', order: 0 },
{ path: '/a/c', order: 0 },
{ path: '/a/d', order: 1 },
{ path: '/b', order: 1 }
];
階層データに関する素晴らしい投稿を見つけました。
リレーショナル データベースに階層データを格納するためのオプションは何ですか?
その質問から、私はフラットテーブルを使用していると思います:
各レコードにレベルとランク (順序付けなど) 列を追加する隣接リストの変更。
そのSOの質問のリンクがダウンしているため、それ以上の情報を取得できません。
ソート機能をアサートするために JsFiddle をセットアップします。
すでにいくつかのアプローチを試しましたが、どれも正しい結果をもたらしませんでした。
まったく別の解決策は、順序を追加してアルファベット順に並べ替えることです。しかし、結果は URL として終わるので、www.example.com/01-products/01-snowboard を持つのはちょっと見苦しいです。
アップデート
私がやろうとしていることを示すために、より複雑な JSFiddle の例を作成しました。
そのため、パスでソートしようとしていますが、ノードはそのレベルで順番にソートする必要があります。アルファベット順に並べ替えた場合のファイル システムのように、最後の子は順番に並べ替えられます。