Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

142
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda