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.
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; }); });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)