Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

140
Vistas
Quiero comparar dos objetos json excluyendo una de las claves.

Tengo dos objetos x,y y quiero comparar ambos excluyendo una de las claves "c"

 let x = {a: 5, b: 6, c: "string"} let y = {a: 5, b: 8, c: "string"}

Cómo estoy tratando de compararlo es:

 JSON.stringify(x) === JSON.stringify(y)

Lo anterior funciona, pero comparará todas las claves que quiero excluir c en comparación aquí. ¿Cuál es la mejor manera de lograr esto?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El siguiente código obtiene todas las claves del objeto x , elimina c de la lista y luego realiza la comparación.

 let x = { a: 5, b: 6, c: "string" }; let y = { a: 5, b: 6, c: "another string" }; console.log( Object.keys(x) .filter((key) => key !== "c") .every((key) => x[key] === y[key]) );
about 4 years ago · Juan Pablo Isaza Denunciar

0

array.sort requiere una función de comparator . Puedes usar exactamente lo mismo aquí

 function myObjComparator (x, y) { if (xa != ya) return ya - xa; return yb - xb; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

En general, NO encadenaría objetos para compararlos. La razón es bastante simple y es que DEBE asegurarse de que el orden de los miembros sea el mismo, de lo contrario, el resultado no será correcto.

Ex:

 // objects are equals const y = { a: '1', b: '2' } const x = { b: '2', b: '1' } // but result is not what you expect JSON.stringify(x) === JSON.stringify(y) // false

Pero, si puedes asegurarte de que el orden de los miembros sea siempre el mismo, stringify es rápido y una buena opción.

Puede usar la sintaxis extendida para evitar la propiedad "c"

 const remappedX = { ...x, c: undefined }; const remappedY = { ...y, c: undefined }; JSON.stringify(remappedX) === JSON.stringify(remappedY); // true

O alternativamente

 const allowedKeys = Object.keys(x).filter((k) => k !== 'c'); JSON.stringify(x, allowedKeys) === JSON.stringify(y, allowedKeys);

El método más genérico es recorrer la tecla Objeto o, alternativamente, las entradas.

 for(const key of Object.keys(x)) { if (key === 'c') { continue; } if (x[key] !== y[key]) { return false; } } return true;

Pero, si su objeto está anidado, necesita usar un algoritmo de igualdad profunda, que por supuesto es más lento.

Aquí se ha dado una respuesta más genérica.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda