頻繁に変更される一連の SQL データがあり、そこからネストされた順序付けられていないリストを定期的に作成する必要があります。SQL データをオブジェクト配列に変換しましたが、そこから順不同リストを作成するロジックに行き詰まっています。
私は再帰関数を作ってみましたが、私はそれらの経験が十分ではないので、
データには次のフィールドが含まれます。
ID Category Name ParentID
したがって、各カテゴリには ID と ParentID (別のカテゴリの ID と一致する) があります。ルート カテゴリはすべて、同じダミーの ParentID を持ちます。
JavaScript オブジェクトには同じプロパティがあります。次に例を示します。
var Categories = [
new Category(1, 'Root', 0),
new Category(2, 'Cat1', 1),
new Category(3, 'Cat2', 2),
new Category(4, 'Cat3', 5),
new Category(5, 'Cat4', 1),
new Category(6, 'Cat5', 5),
new Category(7, 'Cat6', 5),
new Category(8, 'Cat7', 1),
new Category(9, 'Cat8', 2),
new Category(10, 'Cat9', 1),
new Category(11, 'Cat10', 10),
new Category(12, 'Cat11', 1),
new Category(13, 'Cat12', 8)
]
このオブジェクト配列を使用して、次のような順序なしリストを作成する必要があります。
<ul>
<li>Cat1
<ul>
<li>Cat2</li>
<li>Cat8</li>
</ul>
<li>Cat4
<ul>
<li>Cat3</li>
<li>Cat5</li>
<li>Cat6</li>
</ul>
</li>
<li>Cat7
<ul>
<li>Cat12</li>
</ul>
</li>
<li>Cat8</li>
<li>Cat9
<ul>
<li>Cat10</li>
</ul>
</li>
<li>Cat11</li>
</ul>
現在、私のデータの最も深いところは 3 層ですが、スクリプトで任意の数の層を実行できるようにしたいと考えています。
jQueryはこれでOKです。