スタックJavaScriptデータ構造

スタックは、配列と比較してはるかに多くの制限があるデータ構造です。

アイテムをスタックに追加するには、それらを一番上に追加する必要があります。そして、スタックの一番上にあるアイテムのみを削除できます。

本の山のように考えてください。一番上に本を追加することしかできず、一番上に本を削除することしかできません。

したがって、たくさんの本を追加してから、最初に追加した本にアクセスしたい場合は、追加した本に到達するまで、最初にすべての本を削除する必要があります。

この概念は、ファーストイン、ラストアウト(FILO)と呼ばれます

JavaScriptの配列は組み込みであり、それらを構築する必要はありませんが、スタックを実装する必要があります。

データをカプセル化して外部からアクセスできないようにするデータ構造を作成します。許可するのはpush()スタックにデータを追加する方法、およびpop()スタックからデータを削除するメソッド。

これはさまざまな方法で実行できます。 1つの方法はクラスを使用することであり、特に私は使用するつもりですプライベートクラスフィールド。プライベートクラスフィールドはJavaScript標準の一部ではありませんまだ、ただし、バージョン12以降、Chrome、Edge、Safari、およびNode.jsで使用できます。Firefoxではまだ使用できません。

なぜそれらを使用するのですか?クラスの内部状態を非常に簡単にカプセル化し、外部から保護できるためです。

class Stack {
  #items = []
  push = (element) => this.#items.push(element)
  pop = () => this.#items.pop()
  isempty = () => this.#items.length === 0
  empty = () => (this.#items.length = 0)
  size = () => this.#items.length
}

5つのパブリックメソッドがあります。pushそしてpopスタックに追加/スタックから削除するには、isemptyスタックが空かどうかを確認するには、emptyスタックを空にするには、sizeスタックサイズを取得します。

これで、クラスからスタックオブジェクトを作成し、それを操作できます。

const stack = new Stack()
stack.push(1)
stack.push(2)
stack.push(3)
console.log(stack.size()) //3
console.log(stack.pop()) //[ 3 ]
console.log(stack.size()) //2

すべてが公共の財産で同じように機能します:

class Stack {
  items = []
  push = (element) => this.items.push(element)
  pop = () => this.items.pop()
  isempty = () => this.items.length === 0
  empty = () => (this.items.length = 0)
  size = () => this.items.length
}

今を除いて私たちは検査することができますitems外部から:

const stack = new Stack()
stack.push(2)
console.log(stack.items) //[ 2 ]

プライベートクラスのプロパティを使用している間、アクセスstack.items戻るだろうundefined

私の無料ダウンロードJavaScriptビギナーズハンドブック


その他のjsチュートリアル: