Cómo comparar dos objetos usando JavaScript

Para comparar dos objetos de JavaScript para verificar si tienen los mismos pares clave-valor:

  1. Usar JSON.stringify() para convertir objetos en cadenas y luego comparar las cadenas JSON.
  2. Utilice Lodash, una biblioteca de terceros, isEqual() para realizar una comparación profunda entre los objetos.

A diferencia de la comparación de matrices de JavaScript, no puede usar === y == operadores para realizar la comparación de objetos. Esto se debe a que los objetos son tipos de referencia en JavaScript y solo apuntan a la ubicación de memoria donde están almacenados.

JSON.stringify() Método

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

const obj1 = { burger: '🍔', pizza: '🍕' };
const obj2 = { burger: '🍔', pizza: '🍕' };

// compare objects
if (JSON.stringify(obj1) === JSON.stringify(obj2)) {
    console.log('Objects are equal!');
} else {
    console.log('Objects are not equal.');
}

// Objects are equal!

Este método solo funciona cuando los pares clave-valor tienen el mismo orden. . Si los pares clave-valor están dispuestos de manera diferente en los dos objetos pero son iguales, este método devolverá false :

const obj1 = { burger: '🍔', pizza: '🍕' };
const obj2 = { pizza: '🍕', burger: '🍔' };

// compare objects
if (JSON.stringify(obj1) === JSON.stringify(obj2)) {
    console.log('Objects are equal!');
} else {
    console.log('Objects are not equal.');
}

// Objects are not equal.

Para los objetos que tienen un orden arbitrario de pares clave-valor, debe considerar usar isEqual() de Lodash método.

Lodash isEqual() Método

El isEqual() El método de Lodash realiza una comparación profunda entre dos objetos para determinar si son equivalentes. El orden de los pares clave-valor no importa para este método. Devolverá true siempre que existan pares clave-valor y sean iguales. Incluso puede usar este método para comparar arreglos, cadenas, fechas, valores booleanos, búferes de arreglos, etc.

Aquí hay un ejemplo:

const _ = require('lodash');

const obj1 = { burger: '🍔', pizza: '🍕' };
const obj2 = { pizza: '🍕', burger: '🍔' };

if (_.isEqual(obj1, obj2)) {
    console.log('Objects are equal!');
} else {
    console.log('Objects are not equal.');
}

// Objects are equal!

Para obtener más información sobre objetos, prototipos y clases de JavaScript, lea este artículo.