简单实现2个数据结构,来帮助我们更好的处理数据
基本
-
队列(Queue)是一种先进先出(FIFO)的数据结构,通常用于按照顺序处理任务或事件。在前端中,队列可以用于实现异步函数的调用、消息通知、动画播放等场景。队列还可以和数组结合使用,通过push()方法将元素添加到队列尾部,shift() 方法将元素从队列头部取出,实现队列的基本操作。
-
栈(Stack)是一种后进先出(LIFO)的数据结构,通常用于存储临时数据,如函数调用、表达式求值和撤销操作等。在前端中,栈可以用于实现函数调用堆栈、路由历史记录等场景。栈也可以和数组结合使用,通过push()方法将元素添加到栈顶,pop()方法将元素从栈顶取出,实现栈的基本操作。
实现
队列
class Queue { constructor() { // 使用数组来保存队列元素 this.items = []; } // 入队操作,将元素添加到队列末尾 enqueue(item) { this.items.push(item); } // 出队操作,移除队列头部元素并返回 dequeue() { return this.items.shift(); } // 获取队列头部元素 front() { return this.items[0]; } // 判断队列是否为空 isEmpty() { return this.items.length === 0; } // 获取队列长度 size() { return this.items.length; } }
利用构造函数创建了一个空数组作为队列的存储结构。入队操作使用 push()
方法将元素添加到数组末尾,出队操作使用 shift()
方法移除数组头部元素并返回。获取队列头部元素直接访问数组第一个元素即可,判断队列是否为空利用数组的 length
属性,获取队列长度同样可以使用数组的 length
属性。
栈
class Stack { constructor() { // 使用数组来保存栈元素 this.items = []; } // 入栈操作,将元素添加到栈顶 push(item) { this.items.push(item); } // 出栈操作,移除栈顶元素并返回 pop() { return this.items.pop(); } // 获取栈顶元素 peek() { return this.items[this.items.length - 1]; } // 判断栈是否为空 isEmpty() { return this.items.length === 0; } // 获取栈长度 size() { return this.items.length; } }
同样利用构造函数创建了一个空数组作为栈的存储结构。入栈操作使用 push()
方法将元素添加到数组末尾,出栈操作使用 pop()
方法移除数组末尾元素并返回。获取栈顶元素访问数组最后一个元素即可,判断栈是否为空利用数组的 length
属性,获取栈长度同样可以使用数组的 length
属性。