1. 程式人生 > >JavaScript Array類型具有的方法(二)

JavaScript Array類型具有的方法(二)

class 個數 block 插入 設計 .com 這一 法則 def

來自 《JavaScript高級程序設計(第三版)》

輸入提取碼 herm ->獲取本書

2.棧方法

  我們都知道,C++裏面有一種數據結構叫棧(Stack),它是一種線性存儲結構,特點有以下幾個:數據元素遵循著 先進後出(First In Last Out) 的原則;只能在棧頂進行插入、刪除等操作。棧中項的插入(叫做推入)和移除(彈出)只發生在一個位置——棧的頂部。在JS中,為數組專門提供了push()和pop()方法,以便實現類似棧的行為。

  push()方法可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後數組的長度,而pop()方法則從數組末尾移除最後一項,減少數組的length值,然後返回移除的項(移除並返回

)。請看下面的例子。

var colors = new Array();    //創建一個數組
var count = colors.push("red","green");    //推入兩項
alert(count);    //2

count = colors.push("black");    //推入另外一項
alert(count);    //3

var item = colors.pop();    //刪除並取得最後一項
alert(item);    //"black"
alert(colors.length);    //2

  我們也可以將棧方法與其他數組方法連用。請看下面這個例子。

var colors = ["red","blue"];
colors.push("brown");    //添加另一項
colors[3] = "black";    //添加一項
alert(colors.length);    //4

var item = colors.pop();    //取得最後一項
alert(item);    //"black"

3.隊列方法

  與棧方法類似,C++中也有隊列(Queue),特點是:先進先出(FIFO)。隊列在列表的末端添加項,從列表的前端移除項。由於push()是向數組末端添加項的方法,因此要模擬隊列只需一個從數組前端取得項的方法。實現這一操作的數組方法就是shift(),它能夠移除數組中的第一個項並返回該項,

同時將數組長度減一。結合使用shift()和push()方法,可以像使用隊列一樣使用數組。請看下面的例子。

var colors = new Array();    //創建一個數組
var count = colors.push("red","green");    //推入兩項
alert(count);    //2

count = colors.push("black");    //推入另一項
alert(count);    //3

var item = colors.shift();    //取得第一項
alert(item);    //"red"
alert(colors.length);    //2

  另外,還提供了一個unshift()方法,顧名思義unshift()方法與shift()方法用途相反:它能夠在數組前端添加任意個項並返回新數組的長度。因此,同時使用unshift()方法和pop()方法,可以從相反的方向模擬隊列,即在數組的前端添加項,從數組末端移除項。請看下面的例子。

var colors = new Array();    //創建一個數組
var count = colors.unshift("red","green");    //推入兩項
alert(count);    //2

count = colors.unshift("black");    //推入另一項
alert(count);    //3

var item = colors.pop();    //取得最後一項
alert(item);    //"green"
alert(colors.length);    //2

(IE7及更早版本對JavaScript的實現中存在一個偏差,其unshift()總是返回undefined而不是數組的新長度。)


JavaScript Array類型具有的方法(二)