--- id: 587d8255367417b2b2512c74 title: Create a Priority Queue Class challengeType: 1 videoUrl: '' localeTitle: Crear una clase de cola de prioridad --- ## Description
En este desafío crearás una cola de prioridad. Una cola de prioridad es un tipo especial de cola en la que los elementos pueden tener información adicional que especifica su prioridad. Esto podría ser representado simplemente con un número entero. La prioridad de los elementos anulará el orden de colocación para determinar si los elementos de la secuencia se eliminan. Si un elemento con una prioridad más alta se pone en cola después de los elementos con una prioridad más baja, el elemento de mayor prioridad se eliminará de la cola antes que todos los demás. Por ejemplo, imaginemos que tenemos una cola de prioridad con tres elementos: [['kitten', 2], ['dog', 2], ['rabbit', 2]] Aquí el segundo valor (un entero) representa la prioridad del elemento . Si ponemos en cola ['human', 1] con una prioridad de 1 (suponiendo que se da prioridad a las prioridades más bajas) sería el primer elemento que se eliminará de la cola. A la colección le gustaría esto: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]] . Empezamos a escribir un PriorityQueue en el editor de código. Necesitará agregar un método de enqueue en enqueue para agregar elementos con una prioridad, un método de dequeue para eliminar elementos, un método de size para devolver el número de elementos en la cola, un método front para devolver el elemento al frente de la cola y finalmente, un método isEmpty que devolverá true si la cola está vacía o false si no lo está. La enqueue debe aceptar elementos con el formato que se muestra arriba ( ['human', 1] ) donde 1 representa la prioridad. La dequeue debe devolver solo el elemento actual, no su prioridad.
## Instructions
## Tests
```yml tests: - text: Su clase de Queue debe tener un método de enqueue en enqueue . testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.enqueue === "function")}()), "Your Queue class should have a enqueue method.");' - text: Tu clase de Queue debe tener un método de dequeue . testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.dequeue === "function")}()), "Your Queue class should have a dequeue method.");' - text: Tu clase de Queue debe tener un método de size . testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.size === "function")}()), "Your Queue class should have a size method.");' - text: Tu clase de Queue debe tener un método isEmpty . testString: 'assert((function(){var test = new PriorityQueue(); return (typeof test.isEmpty === "function")}()), "Your Queue class should have an isEmpty method.");' - text: 'Su PriorityQueue debe realizar un seguimiento correcto del número actual de elementos utilizando el método de size , ya que los elementos se ponen en cola y se eliminan de la cola.' testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["David Brown", 2]); test.enqueue(["Jon Snow", 1]); var size1 = test.size(); test.dequeue(); var size2 = test.size(); test.enqueue(["A", 3]); test.enqueue(["B", 3]); test.enqueue(["C", 3]); return (size1 === 2 && size2 === 1 && test.size() === 4)}()), "Your PriorityQueue should correctly keep track of the current number of items using the size method as items are enqueued and dequeued.");' - text: El método isEmpty debería devolver true cuando la cola está vacía. testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["A", 1]); test.enqueue(["B", 1]); test.dequeue(); var first = test.isEmpty(); test.dequeue(); return (!first && test.isEmpty()); }()), "The isEmpty method should return true when the queue is empty.");' - text: 'La cola de prioridad debe devolver los elementos con una prioridad más alta antes de los elementos con una prioridad más baja y devolver los elementos en el orden de primero en entrar, primero en salir, de lo contrario.' testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["A", 5]); test.enqueue(["B", 5]); test.enqueue(["C", 5]); test.enqueue(["D", 3]); test.enqueue(["E", 1]); test.enqueue(["F", 7]); var result = []; result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); return result.join("") === "EDABCF";}()), "The priority queue should return items with a higher priority before items with a lower priority and return items in first-in-first-out order otherwise.");' ```
## Challenge Seed
```js function PriorityQueue () { this.collection = []; this.printCollection = function() { console.log(this.collection); }; // Only change code below this line // Only change code above this line } ```
## Solution
```js // solution required ```