ホームページ  >  記事  >  バックエンド開発  >  javascript - 次の配列に基づいて 3 レベルのリンケージ メニュー ツリーを生成するにはどうすればよいですか? (性能を考慮)

javascript - 次の配列に基づいて 3 レベルのリンケージ メニュー ツリーを生成するにはどうすればよいですか? (性能を考慮)

WBOY
WBOYオリジナル
2016-08-04 09:19:551269ブラウズ

第 1 レベルの ID は負の数、parentId は空、第 2 レベルのparentId は第 1 レベルの ID と等しく、第 3 レベルのparentId は第 2 レベルの ID と等しくなります
[{"name" : "広東省","Id": -1,"parentId": null} ,
{"name": "湖北省","Id": -2,"parentId": null},
{"name": "広州","Id": 44,"parentId": -1},
{"name": "武漢","Id": 58,"parentId": -2},
{"name": "深セン" ,"Id": 12,"parentId":-1 },
{" name": "白云","Id": 741,"parentId": 44}]

返信内容:

第 1 レベルの ID は負の数、parentId は空、第 2 レベルのparentId は第 1 レベルの ID と等しく、第 3 レベルのparentId は第 2 レベルの ID と等しくなります
[{"name" : "広東省","Id": -1,"parentId": null} ,
{"name": "湖北省","Id": -2,"parentId": null},
{"name": "広州","Id": 44,"parentId": -1},
{"name": "武漢","Id": 58,"parentId": -2},
{"name": "深セン" ,"Id": 12,"parentId":-1 },
{" name": "白云","Id": 741,"parentId": 44}]

リーリー

効果は写真の通りです

javascript - 次の配列に基づいて 3 レベルのリンケージ メニュー ツリーを生成するにはどうすればよいですか? (性能を考慮)

書き方は少し見苦しいですが、配列のソートに限定されるものではありません(降順である必要はありません)、レベル 3 に限定されるものでもありません。

実際、これは再帰的な関係です。私のプロジェクトにコードを投稿してください:

リーリー

無制限に分類できるコードを考え出すだけです。

JavaScriptバージョン

リーリー

最終的な出力効果は次のとおりです:

リーリー

PS: セパレーターはカスタマイズできます。最適化にご協力ください: arrayToTree() ^_^

PHPバージョン

以前にも書きました。ここをクリックしてください。コピーするのが面倒です_^_。

パフォーマンスを非常に重視する場合は、桁が小さいためレベル 3 リンケージを使用しないことを検討し、それを処理してから、次のオプションを入力します。
ホームページ
-ホームページ
--ホームページ
ホームページ

IDに基づいて分類を見つけ、JQを使用してレコードを判断するだけです

回答は求められていません。(パフォーマンスを考慮して) データのソースから開始するのが最も効果的かつ直接的だと思います。これはデータベースのバージョンです。
テーブル ステートメントを作成します

リーリー

たとえば、Oracle の階層クエリを使用します

リーリー

返される結果は次のとおりです:

javascript - 次の配列に基づいて 3 レベルのリンケージ メニュー ツリーを生成するにはどうすればよいですか? (性能を考慮)

次のように書くこともできます:

リーリー

返される結果は次のとおりです:

javascript - 次の配列に基づいて 3 レベルのリンケージ メニュー ツリーを生成するにはどうすればよいですか? (性能を考慮)

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。