es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Implementación personalizada de Hashable en Javascript

Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código y el resultado en markdown.

Soy bastante nuevo en programación. Quiero implementar una tabla hash simple en JavaScript (para fines educativos). Todo funciona correctamente, excepto cuando intento sobrescribir algún valor, mantiene el valor anterior. Por ejemplo, cuando intento hashTable.set (cherry, 100), luego hashTable.set (cherry, 4) y luego hashTable.get (cherry) me da 100 en lugar de 4. He intentado repasarlo con el depurador, pero resulta que el depurador no ayuda si eres bastante nuevo en programación.

Aquí está el código:

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema en el código proporcionado está en la línea arr[1] === value. Este es un operador de comparación, mientras que lo que realmente se pretende es un operador de asignación arr[1] = value.

    Entonces, la función correcta set() debería ser:

    set(key, value) {
      const address = this._hash(key);
      if (!this.data[address]) {
        this.data[address] = [];
      }
      if (Array.isArray(this.data[address])) {
        for (let arr of this.data[address]) {
          if (arr[0] === key) {
            arr[1] = value; // código corregido
            return;
          }
        }
      }
      this.data[address].push([key, value]);
    }
    

    Con esta corrección, la salida de myHashTable.get("cherry") devolverá correctamente 4.

Comments are closed.