Tengo esta matriz (matriz de objetos java script)
users=[{name:'arrow',age:50,id:444} {name:'bow',age:66,id:884} {name:'arrow',age:30,id:99}, {name:'apple',age:50,id:999} {name:'bow',age:50,id:9669}] Quiero eliminar la segunda aparición del mismo nombre, en este caso, quiero eliminar {name:'arrow',age:30,id:99} and {name:'bow',age:50,id:9669} y conservar las primeras apariciones {name:'arrow',age:50,id:444} and {name:'bow',age:66,id:884}
La matriz resultante debe ser:
users= [{name:'arrow',age:50,id:444} {name:'bow',age:66,id:884}, {name:'apple',age:50,id:999}]const users = [ { name: 'arrow', age: 50, id: 444 }, { name: 'bow', age: 66, id: 884 }, { name: 'arrow', age: 30, id: 99 }, { name: 'apple', age: 50, id: 999 }, { name: 'bow', age: 50, id: 9669 } ] const uniqueUsers = users.reduce((acc, user) => { if (!acc.find(u => u.name === user.name)) { acc.push(user) } return acc }, [])Yo iría con el enfoque de array.filter:
function removeDuplicateKeyFromArray(arrayOfObjects,keyName){ keyHolder = {} arrayOfObjects.filter((obj)=>{ if(keyHolder[obj.keyName]){ return false } keyHolder[obj.keyName] = 1 //or true return true }) }Crearía 2 bucles for para filtrar cualquier duplicado. aquí está mi código:
let users = [{name:'arrow',age:50,id:444}, {name:'bow',age:66,id:884}, {name:'arrow',age:30,id:99}, {name:'apple',age: 50,id: 990}, {name:'bow',age: 50,id: 9669}] for (let i = 0; i < users.length; i++) { for(let x = 0; i < users.length; i++) { if(users[i].name == users[x].name) { users.splice(users[x], 1) } } }