1. 程式人生 > >JavaScript棧和佇列方法(Array型別)

JavaScript棧和佇列方法(Array型別)

Array 是 ECMAScript 中的陣列型別,它提供了一種讓陣列的行為類似於其他資料結構的方法。

棧方法

棧是一種 LIFO(Last-In-First-Out,後進先出)的資料結構,也就是最後新增的項最先被移除。棧中項的插入(推入,push)和移除(彈出,pop)只發生在棧頂。
ECMAScript 為陣列專門提供了 push( ) 和 pop( ) 方法,來實現類似棧的行為。

push( ) 方法可以接收任意個數的引數,將它們逐個新增到陣列末尾,並返回修改後陣列的長度。
pop( ) 方法則從陣列末尾移除最後一項,減少陣列的 length 值,然後返回移除的項。

var colors = new Array();
var count = colors.push("red", "blue", "green")
alert(colors)		// red,blue,green
alert(count)		// 3
alert(colors.pop())		// green
alert(colors.length)		// 2

佇列方法

棧是一種 FIFO(First-In-First-Out,先進先出)的資料結構。佇列在列表的末尾新增項,在前端移除項。
因為 push( ) 是向陣列末端新增項的方法,因此只要再加一個從陣列前端取得項的方法就可以模擬隊列了。
實現這一操作的方法就是 shift( ) ,它能夠移除陣列中的第一項並返回該項,同時陣列長度減 1。
結合 shift( ) 和 push( ) 就可以來模擬隊列了。

var colors = new Array();
var count = colors.push("red", "blue", "green");
alert(colors)		// red,blue,green
alert(colors.shift())   // red

另外還提供了 unshift( ) 方法,他能在陣列的前端新增任意個項並返回新陣列的長度,與pop( ) 連用就可以模擬反向佇列。

var colors = new Array("red", "blue", "green");
var count = colors.unshift("black", "pink")
; alert(colors) // black,pink,red,blue,green alert(colors.shift()) // black

需要注意的是, 當使用 unshift( ) 方法新增多個項時,新增的順序與引數順序相同。