JavaScript にはデータ構造があります。データ構造とは、相互に 1 つ以上の特定の関係を持つデータ要素のコレクションを指します。データ構造により、データ オブジェクトを効果的に管理し、コンピューティング パフォーマンスを向上させることができます。JavaScript のデータ構造はこちらリスト、スタック、キュー、リンク リスト、辞書、ハッシュ、グラフ、二分探索ツリーです。
このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
JavaScript にはデータ構造がありますか?
JavaScript にはデータ構造があります
データ構造: リスト、スタック、キュー、リンク リスト、辞書、ハッシュ、グラフ、二分探索木
#リスト
日常生活では、人々はTo-Doリスト、買い物リスト、ベストリストなどのリストをよく使用します。トップ 10 リストなど。コンピューター プログラムでもリストが使用されます。選択リストは、次の条件下でデータ構造として特に役立ちます:
データ構造が比較的単純である
長いシーケンスで要素を見つける必要がない、または並べ替えてください
逆に、データ構造が非常に複雑な場合、リストの役割はそれほど大きくありません。
スタック
スタックは特別な種類のリストであり、スタック内の要素にはリストの一方の端からのみアクセスできます。この端はスタックトップと呼ばれます。私たちがレストランでよく見るお皿の積み重ねが現実世界の一般的な例であると想像してください。お皿は一番上からしか取り出すことができず、お皿を洗った後は一番上にのみ置くことができます。スタックは後入れ先出しデータ構造として知られています。データはスタックの最上位でのみ追加または削除できるため、効率的なデータ構造であり、そのような操作は高速です。
使用条件:
データストレージが後入れ先出しまたは先入れ後出しの原則を満たしている限り、スタックの使用が優先されます
Queue
キューもリストの一種です。違いは、キューはキューの最後にのみ要素を挿入できることです。キューの先頭にある要素を削除します。私たちが銀行で列に並んでいると想像してください。列の先頭にいる人が最初に取引を行い、後ろから来た人は順番が来るまで列の後ろで待たなければなりません。
使用条件:
データストレージが先入れ先出しおよび後入れ後出しの原則を満たしている限り、キューの使用が優先されます
一般的なアプリケーション シナリオ:
キューは主に時間に関係する場所、特にオペレーティング システムで使用されます。キューはマルチタスクを実現するための重要なメカニズムです。
メッセージ メカニズムを実装できます。
リンク リスト
リンク リストもリストの一種です。リンクされたリストは必要ですか? JavaScript の配列に関する主な問題は、C や Java などの言語の他の配列とは異なり、比較的非効率であることです。実際に配列を使用すると速度が遅いことがわかった場合は、代わりにリンク リストの使用を検討してください。
使用条件:
リンク リストは、1 次元配列が使用できるほぼすべての状況で使用できます。ランダム アクセスが必要な場合は、やはり配列を選択することをお勧めします。
Dictionary
ディクショナリは、キーと値のペアでデータを保存するデータ構造です。JavaScript のオブジェクト クラスはディクショナリに基づいています。 . フォーマルなデザイン。 JavaScriptでは辞書クラスを実装することでこの辞書型オブジェクトを使いやすくすることができます 辞書はオブジェクトの共通機能を実現し、それに応じて必要な機能を拡張することができます オブジェクトはJavaScript記述の随所に現れるため、辞書の役割はも非常に明白です。
ハッシュ
ハッシュ (ハッシュ テーブルとも呼ばれる) は、一般的に使用される配列ストレージ テクノロジであり、配列をすばやく挿入または取得できます。ハッシュ化に使用されるデータ構造はハッシュ テーブルと呼ばれます。ハッシュ テーブル上のデータの挿入、削除、取得は非常に高速ですが、配列内の最大値と最小値を見つけるなどの検索操作では非効率的です。これらの操作には、以下で説明する二分探索ツリーなどの他のデータ構造を利用する必要があります。
ハッシュ テーブルは、JavaScript の配列に基づいて設計できます。配列の長さはあらかじめ設定されており、すべての要素はその要素に対応するキーに従って配列内の特定の場所に格納されます。ここでのキーとオブジェクトのキーは型の概念です。ハッシュ テーブルを使用して配列を格納する場合、ハッシュ関数はキーを 0 からハッシュ テーブルの長さまでの範囲の数値にマップします。
効率的なハッシュ関数を使用した場合でも、2 つのキーが同じ値にマッピングされる可能性があり、この現象は衝突と呼ばれます。一般的な衝突処理方法には、オープン チェーン方式と線形検出方式が含まれます (特定の概念に興味がある人は、オンラインで自信を持って学習できます)
使用条件:
はデータ挿入に使用できます。 、削除と取得。使用されますが、データの検索には適していません
图
グラフは、一連のエッジと一連の頂点で構成されます。地図は私たちの身の回りにある非常に一般的な現実の風景であり、たとえば、2 つの町ごとに何らかの道路でつながっています。上にある各町を頂点、町を結ぶ道路がエッジと考えられます。エッジは頂点のペア (v1、v2) によって定義されます。ここで、v1 と v2 はグラフ内の 2 つの頂点です。頂点にも重みがあり、コストになります。グラフの頂点ペアが順序付けされている場合、そのグラフは有向グラフ (一般的なフローチャートなど) と呼ばれ、そうでない場合は順序なしグラフと呼ばれます。
使用シナリオ (グラフを使用して現実のシステムをモデル化):
交通システムでは、頂点を使用して道路の交差点を表し、エッジを使用して道路を表すことができます。重み付けされたエッジは、制限速度または車線の数を表すことができます。このシステムを使用すると、最適なルートとどの道路が渋滞する可能性が最も高いかを判断できます。
あらゆる交通システムはグラフを使用してモデル化できます。たとえば、航空会社は図を使用して自社の飛行システムをモデル化できます。各空港を頂点、2 つの頂点を通過する各路線をエッジと考えます。重み付けされたエッジは、モデル化されている内容に応じて、ある空港から別の空港へのフライトのコスト、または 2 つの空港間の距離を表すことができます。
グラフの検索には、深さ優先検索と幅優先検索という 2 つの主なアルゴリズムがあります。
二分木と二分探索ツリー
ツリーは、コンピューター サイエンスでよく使用されるデータ構造です。ツリーは、データを階層的に格納する非線形データ構造です。
バイナリ ツリーの各ノードは 3 つ以上の子ノードを持つことはできません。親ノードの 2 つの子ノードをそれぞれ左ノード、右ノードと呼びます。子ノードの数を 2 に制限することで、ツリー内のデータの挿入、検索、削除を行う効率的なプログラムを作成できます。
二分探索木 (BST) は、比較的小さな値が左側のノードに格納され、より大きな値が右側のノードに格納される特別な二分木です。この機能により、数値データと非数値データ (単語や文字列など) の両方の検索が非常に効率的になります。
二分探索ツリーの実装方法
function Node(data, left, right) { // 创建节点 this.data = data; this.left = left; this.right = right; this.show = show } function show () { // 显示树的数据 return this.data } function BST () { // 二叉查找树类 this.root = null; this.insert = insert; this.inOrder = inOrder; // inOrder是遍历BST的方式 } function insert (data) { // 向树中插入数据 var n = new Node(data, null, null) if (this.root == null) { this.root = n; } else { var current = this.root; var parent; while (true) { parent = current if (data < current.data) { current = current.left; if (current == null) { parent.left = n; break; } } else { current = current.right; if (current == null) { parent.right = n; break; } } } } }
BST をトラバースするには 3 つの方法があります: インオーダー トラバーサル (ツリー内のすべてのノードに昇順でアクセスし、最初に左側のノードにアクセスし、次に左側のノードにアクセスします)ルート ノードにアクセスし、最後に右側のノードにアクセスします)、プレオーダー トラバーサル (最初にルート ノードにアクセスし、次に同じ方法で左右のノードにアクセスします)、ポストオーダー トラバーサル (最初に左側のサブツリーからリーフ ノードにアクセスします)右のサブツリーに移動し、次にルート ノードに移動します)
[関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
以上がJavaScriptにはデータ構造がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

HTMLにReactを統合するには、次の手順に従ってください。1。HTMLファイルにReactとReactdomを導入します。 2。反応成分を定義します。 3. ReactDomを使用してコンポーネントをHTML要素にレンダリングします。これらの手順を通じて、静的HTMLページは動的でインタラクティブな体験に変換できます。

Reactの人気には、パフォーマンスの最適化、コンポーネントの再利用、豊富なエコシステムが含まれます。 1.パフォーマンスの最適化は、仮想DOMおよび拡散メカニズムを介して効率的な更新を実現します。 2。コンポーネントの再利用は、再利用可能なコンポーネントによって重複コードを削減します。 3.リッチなエコシステムと一方向のデータフローは、開発エクスペリエンスを向上させます。

Reactは、動的でインタラクティブなユーザーインターフェイスを構築するための選択ツールです。 1)コンポーネント化とJSXは、UIを分割して簡単に再利用します。 2)国家管理は、UIの更新をトリガーするためにUseStateフックを通じて実装されます。 3)イベント処理メカニズムは、ユーザーの相互作用に応答し、ユーザーエクスペリエンスを向上させます。

Reactは、ユーザーインターフェイスを構築するためのフロントエンドフレームワークです。バックエンドフレームワークは、サーバー側のアプリケーションを構築するために使用されます。 Reactはコンポーネントで効率的なUIアップデートを提供し、バックエンドフレームワークは完全なバックエンドサービスソリューションを提供します。テクノロジースタックを選択するときは、プロジェクトの要件、チームのスキル、およびスケーラビリティを考慮する必要があります。

HTMLとReactの関係は、フロントエンド開発の中核であり、最新のWebアプリケーションのユーザーインターフェイスを共同で構築します。 1)HTMLはコンテンツ構造とセマンティクスを定義し、Reactはコンポーネントを介して動的インターフェイスを構築します。 2)ReactコンポーネントはJSX構文を使用してHTMLを埋め込み、インテリジェントなレンダリングを実現します。 3)コンポーネントライフサイクルは、状態および属性に従ってHTMLレンダリングと動的に更新を管理します。 4)コンポーネントを使用して、HTML構造を最適化し、保守性を向上させます。 5)パフォーマンスの最適化には、不必要なレンダリングの回避、重要な属性の使用、およびコンポーネントの単一の責任を維持することが含まれます。

Reactは、インタラクティブなフロントエンドエクスペリエンスを構築するための好ましいツールです。 1)Reactは、コンポーネント化と仮想DOMを通じてUIの開発を簡素化します。 2)コンポーネントは、関数コンポーネントとクラスコンポーネントに分割されます。関数コンポーネントはよりシンプルで、クラスコンポーネントはより多くのライフサイクル方法を提供します。 3)Reactの作業原則は、パフォーマンスを改善するために仮想DOMおよび調整アルゴリズムに依存しています。 4)国家管理は、usestateまたはthis.stateを使用し、ComponentDidmountなどのライフサイクルメソッドが特定のロジックに使用されます。 5)基本的な使用には、コンポーネントの作成と状態の管理が含まれ、高度な使用にはカスタムフックとパフォーマンスの最適化が含まれます。 6)一般的なエラーには、不適切なステータスの更新とパフォーマンスの問題が含まれます。

Reactは、コアコンポーネントと状態管理を備えたユーザーインターフェイスを構築するためのJavaScriptライブラリです。 1)コンポーネントと州の管理を通じてUIの開発を簡素化します。 2)作業原則には和解とレンダリングが含まれ、React.memoとusememoを通じて最適化を実装できます。 3)基本的な使用法は、コンポーネントを作成およびレンダリングすることであり、高度な使用法にはフックとコンテキストアピの使用が含まれます。 4)不適切なステータスの更新などの一般的なエラーでは、ReactDevtoolsを使用してデバッグできます。 5)パフォーマンスの最適化には、React.MEMO、仮想化リスト、コードスプリッティの使用が含まれ、コードを読みやすく保守可能に保つことがベストプラクティスです。

ReactはJSXとHTMLを組み合わせてユーザーエクスペリエンスを向上させます。 1)JSXはHTMLを埋め込み、開発をより直感的にします。 2)仮想DOMメカニズムは、パフォーマンスを最適化し、DOM操作を削減します。 3)保守性を向上させるコンポーネントベースの管理UI。 4)国家管理とイベント処理は、インタラクティブ性を高めます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
