JS中的基礎數據結構

在js中有三種常用的數據結構是我們必須瞭解的,他們分別是棧(stack)、堆(heap)、隊列(queue),下面分別做介紹。

棧(stack)

基礎定義:

  • 1.棧是一種數據結構,它表達的是數據的一種存取方式.
  • 2.棧可用來規定代碼的執行順序,函數調用在js中叫做函數調用棧(call stack).
  • 3.棧表達的是一種數據在內存中的存儲區域.

棧的存取方式遵循 先進後出後進先出 (LIFO) 的原則,學習它的最終目的是掌握函數調用棧的運行方式,下面可通過往容器裏存取小球的圖例理解棧的存取方式:
在這裏插入圖片描述
如上圖中,往容器中一次放入小球,最先放進去的在最底下(棧底),最後放進去的在最上方(棧頂)。當我們取出的時候,很明顯需要我們先取出頂部(棧頂)的小球,才能依次取出下方(棧底)的。這種存取方式就是棧數據結構的的存取特點:先進後出,後進先出原則。

其中在數組(Array)中有兩個棧方法映射了這種存取方式,分別是:

  • push: 向數組末尾添加元素(進棧方法)
  • pop: 彈出數據最末尾的一個元素(出棧方法)

堆(heap)

堆數據結構通常是一種樹狀結構,他的存取方式類似於書架上取書,無需關心存放順序。
在這裏插入圖片描述
該圖可用字面量的形式體現出來:

var Heap = {
	a: 10,
	b: 20,
	c: {
		m: 300,
		n: 400
	}
}

當我們想訪問a時,只需通過Heap.a來訪問即可,而不用關心它所在的順序。

隊列(queue)

隊列是一種 先進先出(FIFO) 的數據結構,就像排隊過安檢,排在隊伍最前邊的人一定是最先過安檢的人。
理解隊列數據結構的目的是:爲了搞清楚事件循環機制(Event Loop)
下面可以通過圖例來理解隊列的存取原理:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章