JavaScript的數組是一個擁有堆棧和隊列自身優點的global對象。也就是說JavaScript數組可以表現的像棧(LIFO)和隊列(FIFO)一樣操作。這也是JavaScript數組強大的可操作性的體現。
堆棧和隊列
堆棧的基本概念
先上張圖:
ECMAScript為數組專門提供了 shift() 和 unshift() 方法,以便實現類似隊列的行為。由於 push() 是向數組末端添加數組項的方法,因此要模擬隊列只需一個從數組前端取得數組項的方法。實現這一操作的數組方法就是 shift() ,它能夠移除數組中的第一個項並返回該項,同時將數組長度減1。
顧名思義, unshift() 與 shift() 的用途相反:它能在數組前端添加任意個數組項並返回新數組的長度。因此,同時使用 unshift() 和 pop() 方法,可以從相反的方向來模擬隊列,即在數組的前端添加數組項,從數組末端移除數組項。
簡單得回憶一下:
-
push()方法可以在數組的末屬添加一個或多個元素shift()方法把數組中的第一個元素刪除unshift()方法可以在數組的前端添加一個或多個元素pop()方法把數組中的最后一個元素刪除
實現類似棧的行為
將push()和pop()結合在一起,我們就可以實現類似棧的行為:

在Chrome瀏覽器控制台輸出的效果如下圖所示:

實現類似隊列的行為
將shift()和push()方法結合在一起,可以像使用隊列一樣使用數組。即在數組的后端添加項,從數組的前端移除項:

在Chrome瀏覽器控制台輸出的效果如下圖所示:

除此之外,還可以同時使用unshift()和pop()方法,從相反的方向來模擬隊列,即在數組的前端添加項,從數組的后端移除項。如下面的示例所示:

在Chrome瀏覽器控制台輸出的效果如下圖所示:

原文:https://blog.csdn.net/qwe502763576/article/details/79055682
