Tengo una matriz que encuentro en la sección searchName , y en la sección resultName separo los nombres duplicados, y en la sección de filters quiero mostrar los objetos que tienen esos nombres duplicados en el console.log , pero una matriz vacía Por favor ayúdame a obtener la respuesta
const data = [ {id: 1,name: "Liam",age: 20}, {id: 1,name: "Noah",age: 22}, {id: 1,name: "Liam",age: 20}, {id: 1,name: "Elijah",age: 18}, {id: 1,name: "Elijah",age: 18} ] const searchName = data.map(item => item.name) console.log(searchName); const toFindDuplicates = arry => arry.filter((item, index) => arry.indexOf(item) !== index); const resultName = toFindDuplicates(searchName) console.log(resultName); const filters = data.filter(x => x.Name === resultName) console.log(filters);Use .includes() para verificar si el nombre de un elemento existe dentro de la matriz resultName . También tuviste un error tipográfico: x.name en lugar de x.Name
const data = [{ id: 1, name: "Liam", age: 20 }, { id: 1, name: "Noah", age: 22 }, { id: 1, name: "Liam", age: 20 }, { id: 1, name: "Elijah", age: 18 }, { id: 1, name: "Elijah", age: 18 } ] const searchName = data.map(item => item.name) console.log(searchName); const toFindDuplicates = arry => arry.filter((item, index) => arry.indexOf(item) !== index); const resultName = toFindDuplicates(searchName) console.log(resultName); const filters = data.filter(x => resultName.includes(x.name)) console.log(filters);Necesita arreglar su función de filtro.
En su versión, intenta comparar una matriz con una cadena.
Lo que tienes que hacer es algo como esto:
const filters = data.filter(x => resultName.includes(x.name))Primero puedes contar los nombres y luego llenar la matriz
const data = [ {id: 1,name: "Liam",age: 20}, {id: 1,name: "Noah",age: 22}, {id: 1,name: "Liam",age: 20}, {id: 1,name: "Elijah",age: 18}, {id: 1,name: "Elijah",age: 18} ] const obj = data.reduce((acc, el) => { acc[el.name] = (acc[el.name] ?? 0) + 1; return acc; }, {}); const all = Object.keys(obj); const duplicates = Object.entries(obj).filter(el => el[1] > 1).map(el => el[0]); const uniques = Object.entries(obj).filter(el => el[1] === 1).map(el => el[0]); console.log(all); console.log(duplicates); console.log(uniques);