Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
December 14, 2022 03:00 pm GMT

Comparar dos Objetos en JavaScript

En ocasiones es necesario comparar dos objetos en JavaScript, por ejemplo, para saber si son iguales o no. En este artculo veremos cmo hacerlo.

A simple vista, parece que comparar dos objetos en JavaScript es una tarea sencilla, pero no lo es. Esto se debe a que los objetos en JavaScript son referencias a una ubicacin de memoria, por lo que si dos variables apuntan al mismo objeto, entonces son iguales.

Por ejemplo, si utilizamos el operador de igualdad === no funcionar dado que las variables apuntan a una ubicacin de memoria diferente, y no se comparan valores como en los datos primitivos.

Otra forma de realizar esta comparacin es convirtiendo los objetos a cadenas de texto con JSON.stringify y luego compararlas con el operador de igualdad ===, pero si los atributos del objeto no estn en el mismo orden, entonces no sern iguales.

Comparar dos Objetos en JavaScript

Para realizar la comparacin de dos objetos podemos crear una funcin que realice esta tarea implementando diferentes validaciones, dado que los objetos pueden tener diferentes tipos de datos, y objetos anidados.

function compareObjects(obj1, obj2) {  const firstObjectKeys = Object.keys(obj1);  const secondObjectKeys = Object.keys(obj2);  if (firstObjectKeys.length !== secondObjectKeys.length)    return false;  return firstObjectKeys.every((key) => {    if(obj1[key] === null && obj2[key] === null)      return true;    if(obj1[key] === null || obj2[key] === null)      return false;    if(typeof obj1[key] === 'object' && typeof obj2[key] === 'object')      return compareObjects(obj1[key], obj2[key])    return obj1[key] === obj2[key]   });}

Esta funcin realiza la validacin de diferentes escenarios:

  • Objetos con atributos en diferente ordene.
  • Objetos con diferentes cantidades de atributos.
  • Objetos con atributos de diferentes tipos de datos.
  • Objetos con atributos anidados.
  • Objetos con atributos nulos.
  • Objetos con objetos anidados.

Por ejemplo, se tienen los siguientes dos objetos:

const personOne = {  name: 'John',  age: 30,  address: {    street: 'Main Street',    number: 123,    city: 'New York',    country: 'USA',  },};const personTwo = {  age: 30,  name: 'John',  address: {    street: 'Main Street',    number: 123,    city: 'New York',    country: 'USA',  },};

Si ejecutamos la funcin compareObjects con los objetos personOne y personTwo como parmetros, nos devolver true:

compareObjects(personOne, personTwo); // true

En conclusin, podemos comparar dos objetos en JavaScript de diferentes formas, la mostrada en este artculo es una de ellas, pero existen otras formas de realizar esta tarea.


Original Link: https://dev.to/asjordi/comparar-dos-objetos-en-javascript-3bmk

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To