JavaScript數(shù)組的棧方法與隊(duì)列方法詳解
數(shù)組(Array)和對(duì)象(Object)應(yīng)該是JavaScript中使用最多也是最頻繁的兩種類(lèi)型了,Array提供了很多常用的方法:棧方法、隊(duì)列方法、重排序方法、操作方法、位置方法、迭代方法等等。
1、Array的棧方法
棧是一種LIFO(Last-In-First-Out,后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),也就是最新添加的項(xiàng)最早被移除。棧中項(xiàng)的插入(push)和移除,只發(fā)生在一個(gè)位置——棧的頂部。ECMAScript為數(shù)組提供了push()和pop()方法,可以實(shí)現(xiàn)類(lèi)似棧的行為。下面兩圖分別演示了入棧與出棧操作。

push()方法可以接收任意數(shù)據(jù)的參數(shù),把它們逐個(gè)添加到數(shù)組末尾,并返回修改后的數(shù)組長(zhǎng)度。pop()方法從數(shù)組末尾移除最后一項(xiàng),減少數(shù)組的length值
var students = [];
students.push("bluce","jordan","marlon","kobe");//入棧4項(xiàng)
alert(students.length); //4
alert(students[0]); //"bluce",第一項(xiàng)在棧的底部
alert(students[1]); //"jordan"
students.push("paul");
alert(students.length); //5
var item = students.pop(); //"paul"
alert(students.length); //4
2、Array的隊(duì)列方法
棧數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是LIFO(后進(jìn)先出),而隊(duì)列數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是FIFO(First-In-First-Out,先進(jìn)先出)。隊(duì)列在列表的末端添加項(xiàng),從列表的前端移除項(xiàng)。push()方法是向數(shù)組末端添加項(xiàng)的方法,因此要模擬隊(duì)列只需一個(gè)從數(shù)組前端取得項(xiàng)的方法——shift(),其能夠移除數(shù)組中的第一個(gè)項(xiàng)并返回該項(xiàng),同時(shí)數(shù)組的length-1。結(jié)合使用shift()和push()方法,可以像使用隊(duì)列一樣使用數(shù)組。

var students = [];
students.push("bluce","jordan","marlon","kobe");//入隊(duì)4項(xiàng)
//students=["bluce","jordan","marlon","kobe"];
alert(students.length); //4
alert(students[0]); //"bluce",第一項(xiàng)在棧的底部
alert(students[1]); //"jordan"
students.push("paul");
alert(students.length); //5
//students=["bluce","jordan","marlon","kobe","paul"];
var item = students.shift(); //"bluce"
alert(students.length); //4
//students=["jordan","marlon","kobe","paul"];
此外,ECMAScript還提供了unshift()方法,它能在數(shù)組前端添加任意個(gè)項(xiàng)并返回新數(shù)組的長(zhǎng)度。因此,結(jié)合使用unshift()和pop()方法,可以從相反的方向來(lái)模擬隊(duì)列,即在數(shù)組的前端添加項(xiàng),從數(shù)組末端移除項(xiàng)
- 深入JavaScript高級(jí)程序設(shè)計(jì)之對(duì)象、數(shù)組(棧方法,隊(duì)列方法,重排序方法,迭代方法)
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列
- JS實(shí)現(xiàn)隊(duì)列與堆棧的方法
- JavaScript數(shù)組實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列與堆棧
- JavaScript數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之?dāng)?shù)組、棧與隊(duì)列
- JS實(shí)現(xiàn)利用兩個(gè)隊(duì)列表示一個(gè)棧的方法
- JavaScript棧和隊(duì)列相關(guān)操作與實(shí)現(xiàn)方法詳解
- JavaScript基于數(shù)組實(shí)現(xiàn)的棧與隊(duì)列操作示例
- 如何使用JavaScript實(shí)現(xiàn)棧與隊(duì)列
- JavaScript中棧和隊(duì)列應(yīng)用詳情
相關(guān)文章
將字符串中由空格隔開(kāi)的每個(gè)單詞首字母大寫(xiě)
這篇文章主要介紹了如何將字符串中的每個(gè)單詞的首字母變?yōu)榇髮?xiě),需要的朋友可以參考下2014-04-04
Mock.js的安裝與使用教程(擺脫后端同學(xué)的束縛)
Mock功能可以根據(jù)接口/數(shù)據(jù)結(jié)構(gòu)定義、Mock規(guī)則配置、Mock?期望配置,自動(dòng)生成模擬數(shù)據(jù),且使用者可以根據(jù)需要靈活構(gòu)造各種結(jié)構(gòu)的接口數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Mock.js的安裝與使用的相關(guān)資料,需要的朋友可以參考下2022-08-08
javascript相等運(yùn)算符與等同運(yùn)算符詳細(xì)介紹
不管是java、c++、php都有相等運(yùn)算符與等同運(yùn)算符,當(dāng)然javasript也不例外,下面介紹一下2013-11-11
原生js實(shí)現(xiàn)網(wǎng)頁(yè)頂部自動(dòng)下拉/收縮廣告效果
本文主要介紹了原生js實(shí)現(xiàn)網(wǎng)頁(yè)頂部自動(dòng)下拉/收縮廣告效果的實(shí)例代碼。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
JS庫(kù)之Particles.js中文開(kāi)發(fā)手冊(cè)及參數(shù)詳解
因?yàn)樽约盒枰霎a(chǎn)品,所以一個(gè)好的UI界面也是很重要的,發(fā)現(xiàn)這種散射的原子顆粒特效還不錯(cuò)。今天腳本之家小編把Particles.js中文開(kāi)發(fā)手冊(cè)及particles.js參數(shù)分享給大家,需要的朋友參考下吧2017-09-09
不用ajax實(shí)現(xiàn)點(diǎn)擊文字即可編輯的方法
本文給大家分享一段代碼不使用ajax實(shí)現(xiàn)點(diǎn)擊文字即可編輯的方法,代碼簡(jiǎn)單易懂,需要的朋友參考下吧2007-12-12

