tengo una matriz vacia
const someArray = [] y luego tengo otra array de 2 objetos (puede variar)
let users = [ { id: '2c919536-ccb5-4c3b-b599-36dc716b7478', name: 'John Doe', age: 50, }, { id: '2c919536-ccb5-4c3b-b599-36dc716b7478', name: 'Jane Doe', age: 45, }, ]; la clave de id que hace que los usuarios sean únicos.
Como puede ver, tengo 2 usuarios con la misma identificación, solo quiero agregar el primero. lo que hice hasta ahora
users.forEach((user) => { if (!someArray.includes(user.id)) { someArray.push(user); } }); // OTHER METHOD I USED users.forEach((user) => { if (someArray.some((element) => element.id !== user.id)) { someArray.push(user); } }); El primer método que agrega ambos elementos, incluso sus id's mismos y el segundo método no hace nada o no agrega nada.
Puede mantener un mapa con las identificaciones que ya agregó y solo agregarlo si falta la clave:
const ids = {}; users.forEach(user => { if (!ids[user.id]) { someArray.push(user); ids[user.id] = true; } })usar reducir funcionaría para su caso
let users = [{ id: '2c919536-ccb5-4c3b-b599-36dc716b7478', name: 'John Doe', age: 50, }, { id: '2c919536-ccb5-4c3b-b599-36dc716b7478', name: 'Jane Doe', age: 45, }, { id: '8c919536-ccb5-4c3b-b599-36dc716b7478', name: 'Jane Doe', age: 45, }, ]; var result = users.reduce((prev, curr) => { if (prev.find(i => i.id == curr.id)) return prev return [...prev, curr] }, []) console.log(result);