日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript学习笔记之 数组方法一 堆栈 和队列

發(fā)布時間:2025/3/15 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript学习笔记之 数组方法一 堆栈 和队列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)組的方法 以及 堆棧的操作的方法

JavaScript是一種弱類型語言,不像其它程序語言需要嚴(yán)格定義數(shù)據(jù)類型。在JavaScript中數(shù)組可以任意修改變動,這樣也就出現(xiàn)了一個問題,如果邊遍歷數(shù)組邊操作數(shù)組(比如刪除當(dāng)前項,則所有之后的數(shù)組元素下標(biāo)都將向前移動)是一件很危險的事情。

JavaScript的數(shù)組是一個擁有堆棧和隊列自身優(yōu)點的global對象。也就是說JavaScript數(shù)組可以表現(xiàn)的像棧(LIFO)和隊列(FIFO)一樣操作。這也是JavaScript數(shù)組強(qiáng)大的可操作性的體現(xiàn)。今天來學(xué)習(xí)JavaScript數(shù)組的棧和隊列的操作方法。?

堆棧和隊列

  要了解JavaScript數(shù)組的堆棧和隊列方法的操作,需要先對堆棧和隊列基礎(chǔ)知識有所了解。在繼續(xù)后面的內(nèi)容之前,我們先簡單的了解一下堆棧和隊列的概念。

  棧和隊列都是動態(tài)的集合,在棧中,可以去掉的元素是最近插入的那一個。棧實現(xiàn)了后進(jìn)先出。在隊列中,可以去掉的元素總是在集合中存在的時間最長的那一個。隊列實現(xiàn)了先進(jìn)先出的策略。

  

  棧是一種LIFO(Last-In-First-Out,后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),也就是最新添加的項最早被移除。而棧中項的插入(叫做推入)和移除(叫做彈出),只發(fā)生在一個位置——棧的頂部。

  最開始棧中不含有任何數(shù)據(jù),叫做空棧,此時棧頂就是棧底。然后數(shù)據(jù)從棧頂進(jìn)入,棧頂棧底分離,整個棧的當(dāng)前容量變大。數(shù)據(jù)出棧時從棧頂彈出,棧頂下移,整個棧的當(dāng)前容量變小。

  比如說,我們在一個箱子中放了很多本書,如果你要拿出第二書,那么你要先把第一本書拿出來,才能拿第二本書出來;拿出第二本書之后,再把第一本書放進(jìn)去。

ECMAScript為數(shù)組專門提供了?push()?和?pop()?方法,以便實現(xiàn)類似棧的行為。?push()?方法可以接收任意數(shù)量的參數(shù),把它們逐個添加到數(shù)組末尾并返回修改后數(shù)組的長度。而?pop()?方法則從數(shù)組末尾移除最后一項,減少數(shù)組的length值,然后返回移除的項。

?

隊列的基本概念

  棧數(shù)據(jù)結(jié)構(gòu)的訪問規(guī)則是LIFO(后進(jìn)先出),而隊列數(shù)據(jù)結(jié)構(gòu)的訪問規(guī)則是FIFO(Fist-In-First-Out,先進(jìn)先出)。隊列在列表的末端添加項,從列表的前端移除項。

  

    入隊列操作其實就是在隊尾追加一個元素,不需要任何移動,時間復(fù)雜度為O(1)。出隊列則不同,因為我們已經(jīng)架設(shè)下標(biāo)為0的位置是隊列的隊頭,因此每次出隊列操作所有元素都要向前移動

  

   

ECMAScript為數(shù)組專門提供了?shift()?和?unshift()?方法,以便實現(xiàn)類似隊列的行為。由于?push()?是向數(shù)組末端添加數(shù)組項的方法,因此要模擬隊列只需一個從數(shù)組前端取得數(shù)組項的方法。實現(xiàn)這一操作的數(shù)組方法就是?shift()?,它能夠移除數(shù)組中的第一個項并返回該項,同時將數(shù)組長度減1。

顧名思義,?unshift()?與?shift()?的用途相反:它能在數(shù)組前端添加任意個數(shù)組項并返回新數(shù)組的長度。因此,同時使用unshift()?和?pop()?方法,可以從相反的方向來模擬隊列,即在數(shù)組的前端添加數(shù)組項,從數(shù)組末端移除數(shù)組項。

?

ES3 添加的方法

      

ES3 子數(shù)組的方法 數(shù)組排序 數(shù)組轉(zhuǎn)換

      

      

      

ES5的方法

      

轉(zhuǎn)載于:https://www.cnblogs.com/syomm/p/5630068.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript学习笔记之 数组方法一 堆栈 和队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。