Cómo comparar dos matrices en JavaScript

Desafortunadamente, en JavaScript estándar, no existe un método directo disponible para comparar dos matrices y verificar si son iguales. Si busca esto en Google, encontrará muchas respuestas diferentes en StackOverflow y otras comunidades de desarrolladores.

Al comparar dos matrices, debe asegurarse de que su longitud sea la misma, los valores sean idénticos y los objetos presentes en ellas sean del mismo tipo.

JSON.stringify() Método

La forma más sencilla y rápida de comparar dos matrices es convertirlas en cadenas usando el método JSON.stringify() y luego usar el operador de comparación para verificar si ambas cadenas son iguales:

const arr1 = ['🍕', '🍔', '🍵', '🎂', '🍦'];
const arr2 = ['🍕', '🍔', '🍵', '🎂', '🍦'];

// compare arrays
if (JSON.stringify(arr1) === JSON.stringify(arr2)) {
    console.log('Both arrays are equal!');
} else {
    console.log('Arrays are not equal.');
}

Este enfoque es bueno solo para una comparación básica cuando los elementos en ambas matrices tienen exactamente el mismo orden. Si el orden de los elementos es diferente en ambas matrices, no funcionará.

Por ejemplo, las siguientes dos matrices no ser igual usando el JSON.stringify() método:

const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['a', 'c', 'b', 'd'];

JSON.stringify(arr1) === JSON.stringify(arr2); // false

Las dos matrices anteriores contienen el mismo número de elementos y exactamente los mismos valores pero en un orden diferente. Por lo tanto, no son iguales cuando se comparan a través de JSON.stringify() .

Lodash

Para arreglos complejos que contienen elementos en un orden diferente, así como otros arreglos y objetos, necesitamos una solución más robusta como el _.isEqual() de Lodash. método.

El _.isEqual() El método realiza una comparación profunda entre dos matrices para determinar si son equivalentes. Incluso puede usarlo para realizar una comparación entre objetos, fechas, cadenas, búferes de matriz y más.

Aquí hay un ejemplo:

const arr1 = ['John Doe', {age: 24, nationality: 'DE'}];
const arr2 = ['John Doe', {nationality: 'DE', age: 24}];

// compare arrays
if (_.isEqual(arr1, arr2)) {
    console.log('Arrays are equal!');
}

Eche un vistazo a esta guía para obtener más información sobre las matrices de JavaScript y cómo usarlas para almacenar múltiples valores en una variable.