Fantasy-Map-Generator/modules/priority-queue.js
2024-10-22 15:20:08 -04:00

29 lines
No EOL
466 B
JavaScript

/**
* @template T
*/
class PriorityQueue extends Array {
/**
* @param {{comparator: (a:T, B:T) => number | boolean}} options
*/
constructor({comparator}) {
super();
}
/**
* @param {T} value
*/
enqueue(value) {
this.push(value);
this.sort(comparator);
}
/**
* @returns {T}
*/
dequeue() {
return this.shift();
}
}
globalThis.PriorityQueue = PriorityQueue;