Tratando de encontrar la falla en mi lógica. Tengo una porción de estado llamada empresas que se inicializa en una matriz vacía:
const [companies, setCompanies] = useState([]);Me llegan mis datos, que son una serie de objetos con datos de la empresa. Quiero enviar los nombres de las empresas al estado de las empresas, pero verifique si el nombre ya existe allí. Esta es la solución que se me ocurrió, pero por alguna razón sigo haciendo que cada elemento aparezca en la matriz de estado, incluso si ya existe.
// Data is an array of objects containing company data including the company name (companyName) // State const [companies, setCompanies] = useState([]); useEffect(() => { const companyNames = data.map(app => app.companyName); const filteredName = companyNames.filter(name => companies.includes(name) === false); setCompanies(filteredName); }, [data]) // Expected Output ==> [array with no repeating names] // Current OutPut ==> [all names even if they appear more than once]El objeto de set de javascript está hecho a medida para esto.
consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
// Use to remove duplicate elements from the array const numbers = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5] console.log([...new Set(numbers)]) // [2, 3, 4, 5, 6, 7, 32]