「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JS スタック DS&A の概要

JS スタック DS&A の概要

2024 年 8 月 26 日に公開
ブラウズ:347

最新のデバイスを使用している場合は、気づかなかったとしてもスタック操作に遭遇したことがあるでしょう。スタックは、関数呼び出しの管理から元に戻す操作の有効化に至るまで、多くのプログラミング タスクの基礎となります。

スタックとは何ですか?

スタックは、LIFO または FILO 構造でデータを編成する操作の順序に従う線形データ構造です。

LIFO: 後入れ先出し。

FILO: 先入れ後出し。

スタックは、要素の追加と削除、最上位の要素の表示、コレクションが空かフルかを表示するなど、要素のコレクションに対して操作を実行するために使用されます。

例えば:

現在 Web ブラウザで www.ESPN.com にアクセスしているときに、誤ってシカゴ ホワイトソックスの野球チケットの広告をクリックした場合。意図的にではないかもしれませんが、スタックに追加しましたが、現在はスタックの一番上にあります。そして、シカゴ・ホワイトソックスが15連敗していることに気づきました。そうですね...戻るボタンを押しましょう(スタックの一番上からその要素を削除します)。

JS stacks DS&A intro

はい、そこにあるやつです。これは、スタック操作における LIFO 原則を示しています。最後に訪問したページを履歴 (またはスタック) から残し (削除し)、www.ESPN.com に戻ります...おそらく来年はホワイトソックスです。

スタック操作は、いくつか例を挙げると、Web ブラウザーの注文履歴の管理、テキスト エディターでの元に戻すおよびやり直し、関数呼び出しスタックなどを必要とするアプリケーションでよく使用されます。

スタックを変更するときによく使用される関数は次のとおりです。

.Push = 要素をスタックに追加します。

.pop = スタックから最上位の要素を削除します。

.peek = スタックの最上位要素を表示します。

.length/.size = スタック内のインデックスの合計を決定します。 JavaScript は (.length)

を使用します

.isEmpty = スタックが空かどうかを確認します。

.isFull = スタックがいっぱいかどうかを確認します。配列が固定サイズの場合。

スタック データ構造は、スタック クラスまたは通常の配列を使用して作成できます。

クラスなしのスタックの実装:

スタック クラスを使用せずにスタック操作を実行する場合、配列を使用してスタック操作をシミュレートします。

以下は、スタック操作を使用して数値の配列を反転する例です。 JSON.stringify を使用して、配列の結果の値を目的の配列の結果と比較します。

元:

// Reverse an array using stack operations

let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array
let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array
let ordernumberList = []; // array to store the reversed order

// Loop through the numberList array to reverse its order
for (var i = 0; i 



最後の if-else ステートメントを強調したいと思います。 JSON.stringify メソッドを使用して 2 つの配列を比較しました。これがないと、配列の内容が同じであっても、比較で false が返され、else 条件がトリガーされてしまうからです。これは、JavaScript で配列を比較するときに、配列内の実際の内容ではなく、配列の参照 (つまり、メモリの場所) を比較するために発生します。

for ループを通してわかるように、メソッド .pop は最初にnumberList 配列の最後のインデックス (LIFO) を (削除) します。次に、.push メソッドを使用してそれを新しい配列 ordernumberList に追加し、元の配列を逆にします。

FILO は、スタック操作で変更された場合、ordernumberList 配列にプッシュされた最初のインデックスが最後の出力 (FILO) になるように定式化された新しい配列に入力されます。

この記事では、LIFO と FILO の原則を使用してスタックがどのように動作するかを調べ、JavaScript でスタック操作を実装しました。 Web ブラウジングなどの現実世界のシナリオに見られるように、スタックを理解することは、多くのプログラミング タスクにとって不可欠です。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/cedsengine/js-stacks-dsa-intro-bl3?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>
  • ## PHP のメモリ使用量を効果的にプロファイリングする方法: Xdebug の代替案とベスト プラクティス
    ## PHP のメモリ使用量を効果的にプロファイリングする方法: Xdebug の代替案とベスト プラクティス
    PHP メモリ消費の分析PHP ページのメモリ使用量を精査する方法を探しています。具体的には、データのメモリ割り当てを決定し、大量のメモリ消費の原因となっている関数呼び出しを特定することを目的としています。Xdebug の制限事項Xdebug は、次のようなトレース機能を提供します。はメモリ デルタ...
    プログラミング 2024 年 11 月 7 日に公開
  • 仮想 DOM でコンポーネントがレンダリングされる方法と再レンダリングを最適化する方法
    仮想 DOM でコンポーネントがレンダリングされる方法と再レンダリングを最適化する方法
    最新の Web アプリケーションを構築する場合、アプリの高速性と応答性を維持するには、UI (ユーザー インターフェイス) を効率的に更新することが不可欠です。多くのフレームワーク (React など) で使用される一般的な戦略は、仮想 DOM と コンポーネント を使用することです。この記事では、...
    プログラミング 2024 年 11 月 7 日に公開
  • CRUD オペレーション: それは何ですか? どのように使用できますか?
    CRUD オペレーション: それは何ですか? どのように使用できますか?
    CRUD オペレーション: それは何ですか? どのように使用できますか? CRUD 操作 (作成、読み取り、更新、削除) は、データ管理を必要とするアプリケーションの基本です。これらの操作はデータベースと効果的に対話するために必要な基本機能を提供するため、開発者にとってこれらの操作...
    プログラミング 2024 年 11 月 7 日に公開
  • 無料の Java ユーティリティ パッケージの紹介
    無料の Java ユーティリティ パッケージの紹介
    Java バックエンド開発者向けの高速で使いやすいプログラミング ツールキット 管理者および開発者としての職業生活の中で、私は数え切れないほどのフリーウェアやオープンソース製品から何度も恩恵を受けてきました。したがって、私もこのコミュニティに貢献するのは自然なことです。 この Java クラスのコレ...
    プログラミング 2024 年 11 月 7 日に公開
  • 入れ子になった配列の PHP Foreach ループで配列キーを取得する方法
    入れ子になった配列の PHP Foreach ループで配列キーを取得する方法
    PHP: Foreach ループでの配列キーの取得PHP では、foreach ループを使用して連想配列を反復処理すると、両方の値にアクセスできます。そして鍵。ただし、key() 関数は現在の値のキーのみを返すため、ネストされた配列を操作する場合には不十分な場合があります。たとえば、次のような配列を...
    プログラミング 2024 年 11 月 7 日に公開
  • MySQL テーブルで Latin1 文字を UTF-8 に変換するにはどうすればよいですか?
    MySQL テーブルで Latin1 文字を UTF-8 に変換するにはどうすればよいですか?
    UTF8 テーブルの Latin1 文字を UTF8 に変換適切な処理を保証するために必要な mysql_set_charset 関数が PHP スクリプトに欠けていることがわかりました。 UTF-8 文字の。この修正を実装したにもかかわらず、UTF8 テーブルに格納されている Latin1 文字を...
    プログラミング 2024 年 11 月 7 日に公開
  • Zapcap API (字幕用 API) の使用方法
    Zapcap API (字幕用 API) の使用方法
    自動ビデオ処理用の ZapCap の API を既存のシステムに統合することは、複雑さを最小限に抑え、効率を最大限に高めるように設計された簡単なプロセスです。 ZapCap は、シームレスなオンボーディングを確保するために、開発者向けの API ドキュメントを提供します。 ステップバ...
    プログラミング 2024 年 11 月 7 日に公開
  • ブートストラップ コンポーネントを探索する
    ブートストラップ コンポーネントを探索する
    Bootstrap 5 は、最も人気のあるフロントエンド フレームワークの 1 つであり、開発者が応答性が高く視覚的に魅力的な Web サイトを迅速に構築するのに役立つ、さまざまな便利なコンポーネントとユーティリティを提供します。 カード カードは、Bootstrap 5 の多用途...
    プログラミング 2024 年 11 月 7 日に公開
  • SVG 管理の簡素化: パスを定数の単一の JS ファイルに変換
    SVG 管理の簡素化: パスを定数の単一の JS ファイルに変換
    React.js アプリケーションを構築する場合、SVG アイコンを効率的に管理することが重要です。 SVG はレスポンシブ デザインに必要なスケーラビリティと柔軟性を提供しますが、大規模なプロジェクトでの取り扱いは煩雑になる可能性があります。そこで svg-path-constants が登場しま...
    プログラミング 2024 年 11 月 7 日に公開
  • JavaScript コード構造を管理する方法
    JavaScript コード構造を管理する方法
    良い!クリーンで整理された JavaScript コードベースを維持することは、プロジェクトを長期的に成功させるために不可欠です。適切に構造化されたコードベースにより、可読性が向上し、技術的負債が軽減され、デバッグとスケーリングが容易になります。小規模なプロジェクトに取り組んでいる場合でも、大規模な...
    プログラミング 2024 年 11 月 7 日に公開
  • オーバーフローを左に流れるように構成できますか?
    オーバーフローを左に流れるように構成できますか?
    オーバーフローは左に流れるように設定できますか?オーバーフローは通常、コンテンツを強制的に右に流すことで処理され、左端のコンテンツが切り取られます。ただし、特定の CSS スタイルを適用することで、この動作を元に戻すことができます。解決策左側へのオーバーフローを有効にするには、次の手順に従います:オ...
    プログラミング 2024 年 11 月 7 日に公開
  • データ型を維持しながら NumPy 配列を異なるデータ型と組み合わせるには?
    データ型を維持しながら NumPy 配列を異なるデータ型と組み合わせるには?
    NumPy で複数のデータ型を持つ配列を結合する異なるデータ型を含む配列を、各列の対応するデータ型を持つ 1 つの配列に連結したいという要望が考えられます。挑戦です。 np.concatenate() を使用する一般的なアプローチでは、残念ながら配列全体が文字列データ型に変換され、メモリ効率が低下し...
    プログラミング 2024 年 11 月 7 日に公開
  • インラインブロックを同じ行に水平に配置するにはどうすればよいですか?
    インラインブロックを同じ行に水平に配置するにはどうすればよいですか?
    同じ行でインライン ブロックを水平に整列する問題インライン ブロックには、ベースラインの整列や自動センタリングなど、フローティング要素に比べて利点があります。視野が狭くなったとき。ただし、2 つのインライン ブロックを同じ線上で水平に整列させると、問題が発生する可能性があります。インライン ブロック...
    プログラミング 2024 年 11 月 7 日に公開
  • やる気をなくす
    やる気をなくす
    初心者のように感じて、数回やめました。 初めてコーディングについて考え始めたのは子供の頃でしたが、むしろ社交的な人間になることを選択し、現在 26 歳になり、Python、JS、React、DB などのコーディングを何度も学ぼうとしました。もっといろいろありましたが、最後には圧倒さ...
    プログラミング 2024 年 11 月 7 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3