¿Cuál es la mejor manera de comparar dos páginas HTML con los mismos datos pero marcado diferente?

En este artículo, aprenderemos sobre la mejor manera de comparar dos páginas HTML con los mismos datos pero con marcas diferentes. Primero, necesitamos saber cómo comparar dos páginas HTML. Ahora, la forma más eficiente de verificar ambas páginas es usar el código hash de ambos contenidos de la página y compararlos para ver si son iguales.

JavaScript hashCode(): para implementar hashCode() en JavaScript, necesitamos crear una función que genere códigos hash.

Ahora, el código hash generalmente está formado por la siguiente implementación.

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

Código JavaScript para la función hash:

Javascript

// Generate a hash code or string
    Object.defineProperty(String.prototype, 'hashCode', {
         value: function()
         {
           var hashValue = 0;
           var i, code;
           for (i = 0; i < this.length; i++)
           {
             // Returns the unicode of first character
             code  = this.charCodeAt(i);
             hashValue  = ((hashValue << 5) - hashValue) + code;
             hashValue |= 0;
           }
           return hashValue;
         }
    });

 La línea que contiene (hashValue << 5) es la misma que ( hashValue * 31 + char). Entonces (hashValue <<5) es hashValue * 32 y ((hashValue << 5)-hashValue) es hashValue *31. Escribirlo en este formato solo lo hace más rápido y aumenta su eficiencia.

Después de generar la función, necesitamos extraer el contenido de las dos páginas y generar códigos hash de lo siguiente. Si ambos coinciden, entonces ambos son iguales o son diferentes. El resultado se muestra mediante un mensaje de alerta utilizando la función JavaScript innerHTML()

Código HTML: 

HTML

<!DOCTYPE html>
<html>
  <body>
    <!-- The first page content -->
    <div id="pageID1">
      <strong style="margin: 0px; padding: 0px"> GeeksforGeeks </strong>
      is a computer science portal that contains articles on mordern
      technologies as well as programming.It also helps us to prepare for
      various competitive programming competitions as well. So,that's why,
      GeeksforGeeks is recommended for every student out there who is eager to
      learn about new things related to mordern technology.
    </div>
    <br /><br />
    <!-- The second page content -->
    <div id="pageID2">
      <div class="different markup"></div>
      <i style="margin: 0px; padding: 0px">GeeksforGeeks</i>
      <b
        >is a computer science portal that contains articles on mordern
        technologies as well as programming.It also helps us to prepare for
        various competitive programming competitions as well. So,that's why,
        <em style="color: green">GeeksforGeeks</em> is recommended for every
        student out there who is eager to learn about new things related to
        mordern technology.</b
      >
    </div>
    <br />
    <!--The comparison result is shown here -->
    <h3 id="compareResultID" style="color: green"></h3>
    <script>
      // Generate a hash code or string
      Object.defineProperty(String.prototype, "hashCode", {
        value: function () {
          var hashValue = 0;
          var i, code;
 
          for (i = 0; i < this.length; i++) {
            // Returns the unicode of first character
            code = this.charCodeAt(i);
            hashValue = hashValue * 32 - hashValue + code;
 
            hashValue |= 0;
          }
          return hashValue;
        },
      });
      var hashValue1 = document.getElementById("pageID1").innerText.hashCode();
      var hashValue2 = document.getElementById("pageID2").innerText.hashCode();
 
      if (hashValue1 !== hashValue2) {
        document.getElementById("compareResultID").innerHTML =
          "They are different Pages";
      } else {
        document.getElementById("compareResultID").innerHTML = "Same Pages";
      }
    </script>
  </body>
</html>

Producción:

Si los contenidos son diferentes, se mostrará una salida diferente. En el segundo ejemplo, se utiliza el enfoque más rápido .

Ejemplo 2:

HTML

<!DOCTYPE html>
<html>
  <body>
    <!-- The first page content -->
    <div id="pageID1">
      <strong style="margin: 0px; padding: 0px"> GeeksforGeeks </strong>
      is a computer science portal that contains articles on mordern
      technologies as well as programming.It also helps us to prepare for
      various competitive programming competitions as well. So,that's why,
      GeeksforGeeks is recommended for every student out there who is eager to
      learn about new things related to mordern technology.
    </div>
    <br /><br />
    <!-- The second page content -->
    <div id="pageID2">
      <div class="different markup"></div>
      <i style="margin: 0px; padding: 0px">GeeksforGeeks</i>
    </div>
    <br />
    <!--The comparison result is shown here -->
    <h3 id="compareResultID" style="color: green"></h3>
    <script>
      // Generate a hash code or string
      Object.defineProperty(String.prototype, "hashCode", {
        value: function () {
          var hashValue = 0;
          var i, code;
          for (i = 0; i < this.length; i++) {
            // Returns the unicode of first character
            code = this.charCodeAt(i);
            hashValue = (hashValue << 5) - hashValue + code;
            hashValue |= 0;
          }
          return hashValue;
        },
      });
      var hashValue1 = document.getElementById("pageID1").innerText.hashCode();
      var hashValue2 = document.getElementById("pageID2").innerText.hashCode();
 
      if (hashValue1 !== hashValue2) {
        document.getElementById("compareResultID").innerHTML =
          "Different Pages";
      } else {
        document.getElementById("compareResultID").innerHTML =
          "They are same Pages";
      }
    </script>
  </body>
</html>

Producción:

Publicación traducida automáticamente

Artículo escrito por dassohom5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *