數組的push()、pop()、shift()和unshift()方法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM