Javascriptのネストされたセット

最新のサイト(および古いサイト)には、ネストされた構造、オブジェクト階層、ツリーがあります。最も一般的な例はディレクトリです。



今日、多くのプロジェクトがJavascriptを使用して開発されています。この場合、ツリー構造を保存する方法は?これが私が話したいことです。



今の私の仕事は、製品パラメータに基づいてカタログの階層構造を作成することです。



ツリーを格納するためのさまざまなアルゴリズムがあり、そのようなアルゴリズムの例としては、隣接リスト、マテリアライズドパス、ネストされたセット、およびクロージャーテーブルがあります。



これ以上アドバイスをいただければ幸いです。



Joomlaの拡張機能を書いたとき、私はNestedSetをよく使用しました。私がこのモデルに最初に出会ったのはこのCMSでした。しかし、スタックが変更され、Javascriptになりました。習慣は残っており、Joomlaサイトも残っています。新しいサービスやプロジェクトにデータを転送する必要があります。



ネストされたセットに関する情報はインターネット上に非常に多くあり、必要に応じていつでも見つけることができますが、それでも、このデータモデルについて少し説明する必要があります。



ネストされたセットのポイントは、階層内の各ノードに左キーと右キーのペアがあることです。それらの値に応じて、ツリーがトラバースされます。私の意見では、アルゴリズムの良い点はデータサンプリングの速度です。このアルゴリズムには再帰はありません。同時に、ツリー構造の変更、ノードの追加、削除、転送を行うには、すべてのキーを再計算する必要があります。



Javascriptプロジェクトでネストされたセットのデータを使用するには、このモデルで機能するモジュールが必要です。npmを



検索すると、ネストされたセット構造からデータをフェッチする機能を持つモジュールが見つかりました。すべてのキーはすでに添付されているはずです。構造を編集する必要がありましたが、そのような機会は見つかりませんでした。



もう1つの問題は、ほとんどの場合、データとツリー構造の両方が1つのエンティティに格納されていることですが、私の意見では、これらを分離する方がはるかに効率的です。



したがって、1つの同じカテゴリ(これらのカテゴリ)が異なる親に存在する可能性があります。これにより、ユーザーはよく考えられた階層を使用して、探しているものをすばやく見つけることができます。



SEOの観点からは、URLが異なり、コンテンツが同じ2つのページがありますが、これは正規のリンクによって解決できます。



これが正しくない場合は、SEOスペシャリストに訂正を依頼します。



結局、モジュールを作成してnpmjs.comに公開することにしました。



それが誰かに役立つなら、私はとてもうれしいです。



現在、私はそれに取り組んでおり、ツリーを介したノードの転送を実装することを計画しています。



パッケージをダウンロードできるnpmへのリンクは次のとおりです



ソースをダウンロードできるgithubへのリンクは次のとおりです



ドキュメントはあちこちにあります。



コメントは大歓迎です。



良いプロジェクトと興味深いタスクをお祈りします。



All Articles