原文链接:https://note.noxussj.top/?source=helloworld
什么是队列?
队列是一种遵循先进先出原则的有序集合,添加新元素的一端称为队尾,另一端称为队首。

实现功能
在 JavaScript 中没有队列,但是可以通过 Array 实现队列的所有功能
- enqueue () 入队
- dequeue () 出队
- top () 获取队首值
- size () 获取队列的元素个数
- clear () 清空队列
应用场景
- JavaScript 异步任务中的任务队列
- 计算最近请求次数
基础案例
通过数组实现
1const queue = [] 2queue.push(1) // 入队 3queue.shift() // 出队 4const top = queue[0] // 获取队首值 5const size = queue.length // 获取队列的元素个数 6queue.length = 0 // 清空队列
通过类模拟实现
1class Queue { 2 constructor() { 3 this.data = {} 4 this.count = 0 5 } 6 7 /** 8 * 入队 9 */ 10 enqueue(item) { 11 this.data[this.count++] = item 12 13 return item 14 } 15 16 /** 17 * 出队 18 */ 19 dequeue() { 20 if (this.count > 0) { 21 const item = this.data[0] 22 23 delete this.data[0] 24 25 this.count-- 26 27 return item 28 } else { 29 return -1 30 } 31 } 32 33 /** 34 * 获取队首值 35 */ 36 top() { 37 if (this.count > 0) { 38 return this.data[0] 39 } else { 40 return -1 41 } 42 } 43 44 /** 45 * 获取队列的元素个数 46 */ 47 size() { 48 return this.count 49 } 50 51 /** 52 * 清空队列 53 */ 54 clear() { 55 this.data = {} 56 this.count = 0 57 58 return {} 59 } 60} 61 62const queue = new Queue() 63 64queue.enqueue('a') 65queue.enqueue('b')
