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