- 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());
输出结果