9

El error en los métodos de eliminación de elementos.

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

Escribe tu comentario
+ 2
Ordenar por:
6
94140Puntos

eso pasa porque usas un console log en vez de retornar algo en el caso de que no haya elementos.

1
13452Puntos

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'
0
7133Puntos

Toda la razón Kike, muchas gracias!!!