Compañeros quiero hacer un pequeño aporte sobre los métodos de eliminación como he visto en muchas de las soluciones que aplicamos dejamos un this.lenght - -; por fuera de las validaciones que realicemos con if, tal y como se muestra en el código:
Ejemplo en un Queue
dequeue() {
if(this.length === 0) {
console.error('El Queue está vacío, no hay elementos para eliminar');
} elseif(this.length === 1) {
const deleteNode = this.first;
this.first = deleteNode.next;
} else {
const deleteNode = this.first;
this.first = deleteNode.next;
this.last = null;
}
this.length--;
returnthis;
}
Sin embargo aquí estamos cometiendo un error dado que al momento de aplicar el método cuando la estructura no tenga ningún elemento ósea cuando su this.lenght sea igual a 0, el método va restar una unidad a ese this.lenght que ahora va ser -1, si esto sucede y en un futuro queremos agregar un nuevo elemento a esta estructura, cuando lo hagamos su this.lenght que debería ser 1 no lo va ser, va ser 0 y esto es un error, la forma en que deberíamos dejar el código en mi opinión es con un this.lenght - -; dentro de cada if excepto en el que tiene la validación de this.lenght ===0, de la siguiente manera:
dequeue() {
if(this.length === 0) {
console.error('El Queue está vacío, no hay elementos para eliminar');
} elseif(this.length === 1) {
const deleteNode = this.first;
this.first = deleteNode.next;
this.length--;
} else {
const deleteNode = this.first;
this.first = deleteNode.next;
this.last = null;
this.length--;
}
return this;
}
Espero les sea util compañeros, #NuncaParesDeAprender
eso pasa porque usas un console log en vez de retornar algo en el caso de que no haya elementos.
Así es, no debes usar console.log… con un return cortas la ejecución del resto del código.
return'El Queue está vacío, no hay elementos para eliminar'
Toda la razón Kike, muchas gracias!!!