Cómo comparar matrices en JavaScript: ¡misterio revelado!

En JavaScript, para comparar dos arreglos, debemos verificar que la longitud de ambos arreglos sea la misma, que los objetos presentes en él sean del mismo tipo y que cada elemento en un arreglo sea igual a la contraparte en un arreglo diferente.

En este artículo, arrojamos luz sobre “ Cómo comparar matrices en JavaScript ”.

Es posible que sea necesario comparar matrices para determinar la equivalencia. Los arreglos en JavaScript son diferentes a los arreglos en C o C++.



Las matrices pueden tener un número o un índice de texto en JavaScript. Usar el índice numerado, atravesar y comparar matrices es fácil, pero es complicado en los índices de texto.

Veamos algunas de las posibles formas de comparar matrices en diferentes escenarios:

  • Las matrices tienen un índice numerado y tienen la misma longitud.
  • Las matrices tienen un índice numerado y no tienen la misma longitud.
  • Las matrices tienen un índice de texto y tienen la misma longitud.
  • Las matrices tienen un índice de texto y no tienen la misma longitud.

 

Las matrices tienen un índice numérico y son iguales en longitud

Por ejemplo, tenemos dos matrices como se muestra a continuación y queremos comparar estas matrices.

 

var Array1 = {"1", "2", "3"}

var Array2 = {"1", "2", "4"}

 

Las matrices anteriores tienen una pequeña cantidad de elementos, que es tres (3). Es más fácil determinar la equivalencia para la matriz pequeña.

Pero para arreglos más largos, tenemos que encontrar algún método para encontrarlo. JavaScript viene con una longitud incorporada método que se puede usar con arreglos y objetos para encontrar su longitud.

Esta longitud se puede comparar usando una construcción condicional, preferiblemente una si declaración. Esto sería algo como esto:

 

if(Array1.length == Array2.length){

    // do something;

}

 

Es necesario comparar la longitud ya que estamos tratando con el caso de matrices con el mismo tamaño. Si la longitud de los arreglos es igual, los elementos cruzados de los arreglos podrían verificarse fácilmente usando un bucle, preferiblemente un for círculo.

Esto sería algo como esto:

 

for....

{

    document.write("Array 1 element " + Array1[i] + "is equal to
"+ "Array 2 element " + Array2[i]);

}

 

Esto solo generará algunas declaraciones de texto que comparan los elementos cruzados. Esto podría modificarse para generar un texto como 'Las matrices son iguales' para que sea simple.

También podría haber un más parte que puede manejar el caso de que las matrices no sean iguales.

 

Las matrices tienen un índice numerado y no tienen la misma longitud

Como hemos mencionado en la otra parte del escenario anterior, las matrices pueden no tener la misma longitud. En tal caso, el Array 1 puede ser igual al Array 2 o el Array 2 puede no serlo.

Por ejemplo, el Array 1 tiene tres elementos como hemos usado anteriormente pero el Array 2 tiene 4 elementos. La matriz 2 tiene todos los elementos de la matriz 1, pero eso no es cierto para la matriz 1.

Para tal caso, podemos comparar cada elemento de una matriz con cada elemento de la otra matriz y viceversa.

Pero en este caso, solo una matriz puede ser igual a la otra o no, pero ambas no pueden ser iguales ya que tienen diferentes longitudes. Para comparar las matrices de esta manera, podemos usar el bucle for anidado que podría ser algo como esto:

 

for...

    for...

{

    {

    	if(Array[i] == Array[j])

    	{
   		 //do something

   		         }

    }

}

Debemos usar un si declaración dentro de los bucles anidados, ya que estamos tratando con arreglos de varios tamaños.

 

Las matrices tienen un índice de texto y tienen la misma longitud

Las matrices indexadas de texto no son una buena práctica. Compleja aún más la tarea de comparar matrices de longitud y de longitud desigual. Esto también cubre 'Las matrices tienen un índice de texto y no son iguales'.

 

La misma longitud, cada valor es igual

Un enfoque para comparar var1 y var2 es verificar si cada valor de var1 es estrictamente igual al valor correspondiente de var2.

Esto funciona bien si todos los elementos de las matrices son primitivos en lugar de objetos. Fin de la operación devuelve un valor booleano. Aquí hay un ejemplo:

 

const var1 = [1, 2, 3];

const var2 = [4, 5, 6];

const var3 = [1, 2, 3];


function arrayEquals(var1, var2) {

  return Array.isArray(var1) && Array.isArray(var2) &&
var1.length === var2.length && var1.every((val, index) => val
=== var2[index]);

}


arrayEquals(var1, var2);

arrayEquals(var1, var3);

 

La salida debería verse así:
falso verdadero

 

Usando el método JSON.stringify()

JavaScript proporciona una función JSON .stringificar() para convertir un objeto o matriz en una cadena JSON. Al convertir a una cadena JSON, podemos verificar directamente si las cadenas son iguales o no.

sin embargo, el JSON .stringificar() El método convierte una matriz en una cadena JSON. Eche un vistazo al siguiente programa para entender bien el concepto.

 

function compareArrays(arr1, arr2){

    // compare arrays

    const result = JSON.stringify(arr1) == JSON.stringify(arr2)

    
// if result is true

    if(result){

   	 console.log('The arrays have the same elements.');

    }

    else{

   	 console.log('The arrays have different elements.');

    }

}

const array1 = [1, 3, 5, 8];

const array2 = [1, 3, 5, 8];

compareArrays(array1, array2);

 

El programa anterior comparará las matrices dadas y producirá una salida. Las matrices tienen los mismos elementos b Porque ponemos el mismo valor en ambas matrices.

En esta entrada de blog, nosotros Aprendí 'Cómo comparar matrices en JavaScript' y analicé algunos de los métodos disponibles para hacerlo, incluido un código de ejemplo sencillo.