最初に
まずはじめにスタックとキューについて説明します。
スタックというものは後にいれたものを先に取り出すことです。
キューは先にいれたものを先に取り出すことです。
スタックとキューのやり方
スタック
letarr=[];arr.push(1);arr.push(2);arr.push(3);arr.push(4);//[1,2,3,4]console.log(arr.pop());//4console.log(arr.pop());//3console.log(arr.pop());//2console.log(arr.pop());//1
スタックではpushメソッドとpopメソッドを使います。
push()は配列の最後に引数に入ってるものを格納するメソッドで,popメソッドは配列の最後にある物を取り出すメソッドです。
まず最初に変数arrのところで配列を宣言します。
そのあとにpush()で引数に入っている数字を格納していっています。
次にpopメソッドで最後のほうから取り出してそれをconsole.logで出力しています。
キュー
letarr=[];arr.push(1);arr.push(2);arr.push(3);arr.push(4);//[1,2,3,4]console.log(arr.shift());//1console.log(arr.shift());//2console.log(arr.shift());//3console.log(arr.shift());//4
キューではpushメソッドとshiftメソッドを使います。
shift()というものは配列の最初にあるものを取り出すメソッドです。
配列を宣言し、pushで格納します。
そのあとshift()で最初にいれたものを取り出すという感じです。
破壊的なメソッド
配列などのオブジェクト(ここではarr)に変更などするとそれに影響が及ぶことです。
最初は空だったarrもpush()により格納されて変更されました。
shift()やpop()も破壊的なメソッドです。
わかりやすいようにコードを書きました。スタックを例に。
letarr=[];arr.push(1);arr.push(2);arr.push(3);arr.push(4);//[1,2,3,4]arr.pop()//4//ここでarrの中身を見てみます。console.log(arr);// [1,2,3]
最初は[1,2,3,4],pop()で4を取り出してみたところ、arrの中身は[1,2,3]になりました。
実は取り出したと同時に削除してしまうんですね...
shiftメソッドも同じように配列の先頭を取り出すと同時に削除してしまいます。
shift,pop,pushメソッド以外にもたくさんの破壊的なメソッドがあるので気を付けて使わないといけないなと思いました。
終わりに
アルゴリズムとデータ構造を勉強したのでそのアウトプットのために書きました。
参考になったらありがたいです。