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

118
Vistas
JavaScript ES6+ compara campos en matrices de objetos

Haciendo girar mis ruedas aquí. Parece simple conceptualmente, pero JS está tratando de matarme.

Dos matrices de objetos:

 let allProfileUsers = [ { id: "0b4cd920-31da-11ec-a31c-cd844bfb73be", auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154", active: true }, { id: "0b4f9840-31da-11ec-a31c-cd844bfb73be", auth_user_id: "fea73670-31ac-11ec-81f6-9b65b19a8154", active: true }, { id: "0b51e230-31da-11ec-a31c-cd844bfb73be", auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154", active: true } ]; let allAuthUsers = [ { id: "fea4c570-31ac-11ec-81f6-9b65b19a8154", username: "user1", active: true, }, { id: "fea73670-31ac-11ec-81f6-9b65b19a8154", username: "user2", active: true, }, { id: "fea98060-31ac-11ec-81f6-9b65b19a8154", username: "user3", active: true, } ];

Necesito comparar el campo "id" en los objetos de la primera matriz con el campo "auth_user_id" en el segundo conjunto de matrices. Básicamente, todos los usuarios de la matriz uno deben existir en la matriz dos, según la coincidencia de esos dos campos.

Esto no funciona (no es abreviatura, por lo que es fácil de depurar):

 let allMatched = allAuthUsers.every(x => { return allProfileUsers.some(pu => { return x.id === pu.auth_user_id; }); });

...devuelve falso;

Por supuesto, podría recorrer manualmente cada valor y compararlos. No quiero eso a menos que no haya otra manera.

Tengo que pensar que JS es capaz de una frase más elegante con flechas. De hecho, frustrantemente, sé que he hecho esto antes, pero parece que no puedo hacer que suceda hoy.

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

0

Amigo, siento que la respuesta está en tu pregunta. Primero debe recorrer la primera matriz (allProfileUsers) y luego verificar si existe en la segunda (allAuthUsers).

 let allMatched = allProfileUsers.every(pu => { return allAuthUsers.some(x => { return x.id === pu.auth_user_id; }); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Pruebe algo como a continuación. Procese uno de los valores de matriz para Set y utilícelo en otra matriz every método.

 let allProfileUsers = [ { id: "0b4cd920-31da-11ec-a31c-cd844bfb73be", auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154", active: true, }, { id: "0b4f9840-31da-11ec-a31c-cd844bfb73be", auth_user_id: "fea73670-31ac-11ec-81f6-9b65b19a8154", active: true, }, { id: "0b51e230-31da-11ec-a31c-cd844bfb73be", auth_user_id: "fea98060-31ac-11ec-81f6-9b65b19a8154", active: true, }, ]; let allAuthUsers = [ { id: "fea4c570-31ac-11ec-81f6-9b65b19a8154", username: "user1", active: true, }, { id: "fea73670-31ac-11ec-81f6-9b65b19a8154", username: "user2", active: true, }, { id: "fea98060-31ac-11ec-81f6-9b65b19a8154", username: "user3", active: true, }, ]; const auth = new Set(allAuthUsers.map(({ id }) => id)); const isExist = allProfileUsers.every(({ auth_user_id }) => auth.has(auth_user_id) ); console.log(isExist)

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