Cómo comparar dos objetos de matriz de JavaScript utilizando JavaScript?

En este artículo, vamos a ver cómo podemos comparar dos objetos matriz de JavaScript utilizando JavaScript?

Hay dos enfoques a este problema, busque primero nos dejó en el método de fuerza bruta.

En el método de fuerza bruta , vamos a tomar una matriz como constante y transversal a través de la segunda matriz. Vamos a comprobar class cada elemento si se produce en la primera matriz. Si lo hace, vamos a ir a la siguiente elemento y si lo hace, no vamos a for falsa a partir de ahí.

En primer lugar, vamos a crear tres matrices,

let arr1 = [1, 2, 3];
let arr2 = [1, 5, 4];
let arr3 = [2, 1, 3];
console.log(arr1);
console.log(arr2);
console.log(arr3);

salida

(3) [1, 2, 3]
(3) [1, 5, 4]
(3) [2, 1, 3]

Vamos a crear una función que toma dos matrices y cheques si son iguales. Podemos utilizar el método incluye comprobar si un elemento se produce en una matriz.

function compare(arr1, arr2) {
for (let i = 0; i < arr1.length; i++) {
if (!arr2.includes(arr1[i]))
return false;
}
return true;
}
compare(arr1, arr2);
compare(arr1, arr3);

salida

False
True

Nuestra función funciona muy bien! Pero vamos a entender lo que estamos haciendo aquí, estamos comparando cada elemento de una matriz return su existencia en la segunda matriz. Si la longitud de la primera matriz es n y la del otro es m , nuestro código toma un tiempo de O (n * m) . Podemos hacer un poco mejor?

Cuando dos matrices son iguales, tienen los mismos elementos. Aquí el problema es que los elementos no están siguiendo un orden determinado. ¿Qué pasa si clasificamos las dos matrices?

function compare(arr1, arr2) {
arr1.sort();
arr2.sort();
if (arr1.length != arr2.length)
return false;
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i])
return false;
}
return true;
}
compare(arr1, arr2);
compare(arr1, arr3);

salida

false
true

Cuando clasificamos las dos matrices si contienen los mismos elementos de su orden se convierte en el mismo. Podemos entonces simplemente comprobar si las dos matrices tienen el mismo elemento presente en el mismo índice y for verdadero y falso otherwise.When que ordenar las dos matrices si contienen los mismos elementos de su orden se convierte en el mismo. Podemos entonces simplemente comprobar si las dos matrices tienen el mismo elemento presente en el mismo índice y return verdadero y falso en caso contrario.

Echemos un vistazo a la cantidad de optimización que hemos logrado. Sorting toma (* n log n) tiempo O si la matriz contiene n elementos y return, bucle de nuestra función de la comparación de toma O (n) tiempo. Efectivamente, nuestro código ahora se ejecuta en O (nlogn) tiempo que es una buena actualización del código anterior que tuvo O (n ^ 2) tiempo!


Deja un comentario

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