Comparar objetos en JavaScript

Ammar Ali 12 octubre 2023
  1. Comparar objetos usando la función JSON.stringify() en JavaScript
  2. Comparar objetos manualmente en JavaScript
Comparar objetos en JavaScript

Este tutorial discutirá cómo comparar objetos manualmente o usando la función JSON.stringify() en JavaScript.

Comparar objetos usando la función JSON.stringify() en JavaScript

Comparar variables en JavaScript es relativamente fácil; solo necesitamos usar el operador de comparación === entre dos variables. Las variables pueden ser de cualquier tipo de datos, como cadenas y números enteros.

El operador de comparación devuelve un valor booleano, que puede ser true o false según las variables que se comparan. Por ejemplo, comparemos dos variables de un tipo de cadena usando el operador de comparación.

Vea el código a continuación.

var a = 'Apple';
var b = 'Apple';
console.log(a === b)

Producción :

true

En la salida, el booleano true indica que las dos variables son idénticas. Del mismo modo, también puede comparar números. Ahora hablemos de la comparación de objetos en JavaScript.

La comparación de objetos no es fácil porque contienen varios valores y también pueden contener objetos dentro de ellos. El método rápido y fácil para comparar dos objetos es usar la función JASON.stringify(). La desventaja de este método es que el orden de las propiedades importa en comparación.

Esta función compara la primera propiedad de un objeto con la primera propiedad del otro objeto, y así sucesivamente. Si cambiamos el orden de las propiedades en uno de los objetos, este método no funcionará. Por ejemplo, comparemos dos objetos usando la función JSON.strigify().

Vea el código a continuación.

const fruit1 = {
  name: 'Apple',
  price: '2'
};
const fruit2 = {
  name: 'Apple',
  price: '2'
};
console.log(JSON.stringify(fruit1) === JSON.stringify(fruit2))

Producción :

true

En este código, estamos comparando dos objetos que contienen dos propiedades cada uno. De la salida, los dos objetos son iguales. Ahora, cambiemos el orden de las dos propiedades en un objeto y luego comparémoslo con el otro usando la función JSON.stringify().

Vea el código a continuación.

const fruit1 = {
  name: 'Apple',
  price: '2'
};
const fruit2 = {
  price: '2',
  name: 'Apple'
};
console.log(JSON.stringify(fruit1) === JSON.stringify(fruit2))

Producción :

false

En la salida, el resultado es false. Hemos cambiado el orden de las propiedades del segundo objeto; esta es la desventaja de este método.

Comparar objetos manualmente en JavaScript

El método anterior tiene una desventaja, por lo que podemos hacer nuestra propia función para comparar dos objetos para que no tengamos que preocuparnos por el orden de las propiedades de los objetos.

Por ejemplo, creemos una función para comparar los objetos anteriores en JavaScript. Vea el código a continuación.

function ObjCompare(obj1, obj2) {
  if (obj1.name === obj2.name && obj1.price === obj2.price) {
    return true;
  };
  return false;
}
const fruit1 = {
  name: 'Apple',
  price: '2'
};
const fruit2 = {
  price: '2',
  name: 'Apple'
};
console.log(ObjCompare(fruit1, fruit2))

Producción :

true

En el código anterior, hicimos la función ObjCompare(), comparando dos objetos según sus propiedades independientemente de su orden. La función devuelve true sólo cuando el nombre y el precio de los dos objetos son iguales; de lo contrario, devolverá false.

También puede crear su propia función para comparar varias propiedades o comparar una propiedad que le gustaría comparar de todas las propiedades disponibles. También puede hacer otra función para comparar más de dos objetos a la vez.

Ahora, considere que tenemos dos objetos con muchas propiedades y queremos comparar todas esas propiedades. Hacer este tipo de función llevará mucho tiempo.

En su lugar, podemos usar la función Object.keys() para obtener todas las claves o propiedades de una función y compararlas usando un bucle. Si todas las propiedades son iguales, la función devolverá true; de lo contrario, devolverá false.

Por ejemplo, hagamos esta función y probémosla con los dos objetos anteriores. Vea el código a continuación.

function ObjCompare(obj1, obj2) {
  const Obj1_keys = Object.keys(obj1);
  const Obj2_keys = Object.keys(obj2);
  if (Obj1_keys.length !== Obj2_keys.length) {
    return false;
  }
  for (let k of Obj1_keys) {
    if (obj1[k] !== obj2[k]) {
      return false;
    }
  }
  return true;
}
const fruit1 = {
  name: 'Apple',
  price: '2',
  color: 'red'
};
const fruit2 = {
  price: '2',
  name: 'Apple',
  color: 'red'
};
console.log(ObjCompare(fruit1, fruit2))

Producción :

true

En este programa, la primera instrucción if dentro de la función ObjCompare() se usa para verificar la longitud de las propiedades o claves dentro de los dos objetos.

Si no son iguales, la función devolverá false y no se moverá al bucle. Este método funciona bien incluso si cambiamos el orden de las propiedades o las claves de cualquiera de los objetos. También puede cambiar esta función para comparar tres o más objetos a la vez.

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - JavaScript Object

Artículo relacionado - JavaScript Boolean