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

129
Vistas
JavaScript ES6+ compare fields in arrays of objects

Spinning my wheels here. Seems simple conceptually but JS is trying to kill me.

Two arrays of objects:

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,
    }
];

I need to compare the "id" field in the objects in the first array to the "auth_user_id" field in the second set of arrays. Basically, all users in array one should exist in array two, based on the match-up of those two fields.

This doesn't work (not shorthand so it's easy to debug):

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

...returns false;

Of course, I could manually loop through each value and compare them. I don't want that unless there's no other way.

I have to think JS is capable of a more elegant one-liner with arrows. In fact, frustratingly, I know I've done this before, but I just can't seem to make it happen today.

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

0

Buddy, I feel the answer is in your question. You need to loop through the first array(allProfileUsers) first and then check if it exist in second(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

Try some thing like below. Process one of array values to Set and use it another array every method.

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