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

168
Vistas
Comparar dos objetos si tienen al menos un valor en común

Dado que tengo dos objetos, ¿cuál es la forma más sencilla de comparar si tienen al menos una propiedad que coincida ( alguna o alguna )? No busco una coincidencia completa de un objeto A completo dentro del objeto B, sino una coincidencia del objeto A parcial dentro del objeto B.

 { name: "John", age: 23, city: "London" } // and { name: "Craig", age: 47, city: "London" } // returns true
 { name: "Adrian", age: 32, city: "Sofia" } // and { name: "Tom", age: 44, city: "Oslo" } // returns false

He probado varias funciones de coincidencia parcial con lodash (isMatch), pero parecen realizar coincidencias de todos con algunos o de todos con todos, mientras que yo busco algunos con algunos.

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

0

Si simplemente está comprobando si tienen algo en común:

 const john = { name: "John", age: 23, city: "London" } const craig = { name: "Craig", age: 47, city: "London" } const adrian = { name: "Adrian", age: 32, city: "Sofia" } const tom = { name: "Tom", age: 44, city: "Oslo" } function hasAnythingInCommon(obj1, obj2) { for (const key in obj1) { if(obj1[key] === obj2[key]) return true } return false } console.log(hasAnythingInCommon(john, craig)) console.log(hasAnythingInCommon(adrian, tom))

Breve explicación:

  1. for (const key in obj1) : Recorre todas las claves en el primer objeto.
  2. if(obj1[key] === obj2[key]) return true : si los dos objetos coinciden en el valor que tienen en una de estas claves, devuelve true inmediatamente.
  3. return false : si pasa por todo el ciclo sin devolver true , entonces no tienen nada en común y devolvemos false .
about 4 years ago · Juan Pablo Isaza Denunciar

0

La forma más fácil es simplemente enumerar todos los atributos como comparaciones:

 const compare = (a, b) => a.name === b.name || a.age === b.age || a.city === b.city;

Una versión más genérica sería:

 const compare = (a, b) => Object.entries(a).some(([key, value]) => value === b[key]);
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