DEV Community

David Yepes
David Yepes

Posted on

Comparar dos objetos || Javascript

En algún momento tendremos que validar si dos objetos son iguales y un “===” no servirá puesto que al trabajar con objetos esta igualdad solo será verdadera si se los dos objetos esta en la misma posición de memoria, ya que en este caso no compara valores como pasa con los tipos de dato primitivo (String, number, boolean)
Existen varias formas de hacer estas validaciones, como convertir el objeto a un string con JSON.stringify(obj1) === JSON.stringify(obj2) pero puede que los atributos de los objetos estén en diferente orden y fallará.
Y como el anterior, hay varios método de validar que un objeto es igual que otro, pero la que considero que es una mejor forma es realizando una función que hace diferentes validaciones puesto que podemos tener diferentes tipos de dato, a continuación les presento la función.

Image description

Esta función valida diferentes escenarios que se pueden tener al momento de comparar dos objetos como:

  • Objetos con atributos en diferente orden
  • Objetos con diferentes cantidades de atributos
  • Objetos con valores null
  • Objetos con otro objeto como atributo (allí se aplica Recursividad, invocando a la misma función)

Image description

Realizando la validación de estos dos objetos con la función propuesta nos indica que ambos objetos son iguales, con todo tipo de dato y con orden diferente.
Por ultimo les dejo el github con el código de la prueba.
https://github.com/davidyero/javascript-tricks/blob/master/js-compare-object.js

Discussion (0)