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)
下面可以通过图例来理解队列的存取原理:
在这里插入图片描述

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