Javascript Array 隊(duì)列方法
棧數(shù)據(jù)結(jié)構(gòu)的訪問規(guī)則是LIFO(后進(jìn)先出),而隊(duì)列數(shù)據(jù)結(jié)構(gòu)的訪問規(guī)則是FIFO( first-in-first-out,先進(jìn)先出)。隊(duì)列在列表的末端添加項(xiàng),從列表的前端移除項(xiàng)。由于push()是向數(shù)組末端添加項(xiàng)的方法,因此要模擬隊(duì)列只需一個從數(shù)組前端取得項(xiàng)的方法。實(shí)現(xiàn)這一操作的數(shù)組方法就是shift(),它能夠移除數(shù)組中的第一個項(xiàng)并返回該項(xiàng),同時將數(shù)組長度減1。結(jié)合使用shift()和push()方法,可以像使用隊(duì)列一樣使用數(shù)組:
var colors=new Array(); //創(chuàng)建一個數(shù)組
var count=colors.push("red","greent"); //推入兩項(xiàng)
alert( count); //2
count=colors.push( "black"); //推入另一項(xiàng)
alert( count); //3
alert (item); //"red"
alert (colors.length); //2
這個例子首先使用push()方法創(chuàng)建了一個包含3種顏色名稱的數(shù)組。代碼中帶陰影的那一行使用shift()方法從數(shù)組中取得了第一項(xiàng),即"red"。在移除第一項(xiàng)之后,"green"就變成了第一項(xiàng),而"black"則變成了第二項(xiàng),數(shù)組也只包含兩項(xiàng)了。
ECMAScript還為數(shù)組提供了一個unshift()方法。顧名思義,unshift()與shift()的用途相反:它能在數(shù)組前端添加任意個項(xiàng)并返回新數(shù)組的長度。因此,同時使用unshift()和pop()方法,可以從相反的方向來模擬隊(duì)列,即在數(shù)組的前端添加項(xiàng),從數(shù)組末端移除項(xiàng),如下面的例子所示:
var colors=new Array(); //創(chuàng)建一個數(shù)組
alert( count); //2
alert( count); //3
alert(item); //"green"
alert(colors.length); //2
南昌網(wǎng)站建公司百恒網(wǎng)絡(luò)工程師分析:這個例子創(chuàng)建了一個數(shù)組并使用unshift()方法先后推入了3個值。首先是"red"和"green",然后是"black",數(shù)組中各項(xiàng)的順序?yàn)?black"、"red"、green"。在調(diào)用pop()方法時,移除并返回的是最后一項(xiàng),即"green"。