class Queue {
constructor() {
this.highTasks = [];
this.normalTasks = [];
this.lowTasks = [];
}
Enqueue (item) {
switch (item.priority) {
case 1:
this.highTasks.push(item);
break;
case 2:
this.normalTasks.push(item);
break;
case 3:
this.lowTasks.push(item);
break;
default:
}
}
Dequeue () {
let task;
if (this.highTasks.length) {
task = this.highTasks.shift();
} else if (this.normalTasks.length) {
task = this.normalTasks.shift();
} else if (this.lowTasks.length) {
task = this.lowTasks.shift();
}
console.log(`{${task.priority},${task.data}}`);
return task;
}
}
const queue = new Queue();
queue.Enqueue({ priority: 1, data: 'a' })
queue.Dequeue()
queue.Enqueue({ priority: 1, data: 'a' })
queue.Enqueue({ priority: 2, data: 'a' })
queue.Dequeue()
queue.Enqueue({ priority: 3, data: 'b' })
queue.Enqueue({ priority: 1, data: 'b' })
queue.Dequeue()
queue.Enqueue({ priority: 2, data: 'b' })
queue.Dequeue()
queue.Dequeue()
queue.Dequeue()