- Queue 队列
- enqueue 入列
2. dequeue 出列
3. front 获取最前的元素
4. isEmpty 判断队列是否为空
5. size 返回队列的长度
- enqueue 入列
队列基于数组,原生使用也是数组的方法。 队列就像 排队一样, 先进先出, 后进后出
定义队列
定义队列基本和栈一样,使用 立即执行函数, 和 使用了 WeakMap 的弱引用
/*** Queue 队列** 1. enqueue 入列* 2. dequeue 出列* 3. front 获取最前的元素* 4. isEmpty 判断队列是否为空* 5. size 返回队列的长度*/let Queue = (function() {// 创建 WeakMap 的实例var _items = new WeakMap();// 返回队列的类return class Queue {constructor() {// 定义存放数据的数组_items.set(this, []);};// 在类中定义队列的方法// 1. enqueue 入列enqueue(elem) {// 往数组添加元素_items.get(this).push(elem);};// 2. dequeue 出列dequeue(elem) {// 使用 shift () 移除数组最前的元素_items.get(this).shift();};//3. fnont 获取最前的元素front() {// 返回队列最前的元素return _items.get(this)[0];};// 4. 判断队列是否为空isEmpty() {return _items.get(this).length === 0;};//size 返回队列的长度size() {return _items.get(this).length;};// toString()toString() {return _items.get(this);}}})()var a = new Queue();// 入列a.enqueue(1);a.enqueue(2);a.enqueue(3);a.enqueue(4);// 出列a.dequeue(1);console.log(a.front());console.log(a.isEmpty());console.log(a.size());console.log(a.toString());
输出结果
