1. 程式人生 > >轉載 -- 陣列的push()、pop()、shift()和unshift()方法

轉載 -- 陣列的push()、pop()、shift()和unshift()方法

 

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

這篇文章簡單易懂,轉載如下

 

版權宣告:本文為博主原創文章,未經博主允許不得轉載。    https://blog.csdn.net/qwe502763576/article/details/79055682
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瀏覽器控制檯輸出的效果如下圖所示:

//下面這個圖的pop輸出是錯的