Aquí está mi matriz:
export const plantList = [ { name: 'monstera', category: 'classique', id: '1ed' }, { name: 'ficus lyrata', category: 'classique', id: '2ab' }, { name: 'pothos argenté', category: 'classique', id: '3sd' }, { name: 'yucca', category: 'classique', id: '4kk' }, { name: 'olivier', category: 'extérieur', id: '5pl' }, { name: 'géranium', category: 'extérieur', id: '6uo' }, { name: 'basilique', category: 'extérieur', id: '7ie' }, { name: 'aloe', category: 'plante grasse', id: '8fp' }, { name: 'succulente', category: 'plante grasse', id: '9vn' } ]Y aquí está mi código para eliminar los valores duplicados:
const categories = plantList.reduce( (acc, plant) => acc.includes(plant.category) ? acc : acc.concat(plant.category), [] );¿Hay una mejor manera de hacer esto? No sé por qué, pero React no se compila con el one-liner.
const categories = Array.from(new Set(plantList));Creo que el mejor enfoque es usar reduce y Map object. Esta es una solución de una sola línea.
const plantList = [ { name: 'monstera', category: 'classique', id: '1ed' }, { name: 'ficus lyrata', category: 'classique', id: '2ab' }, { name: 'pothos argenté', category: 'classique', id: '3sd' }, { name: 'yucca', category: 'classique', id: '4kk' }, { name: 'olivier', category: 'extérieur', id: '5pl' }, { name: 'géranium', category: 'extérieur', id: '6uo' }, { name: 'basilique', category: 'extérieur', id: '7ie' }, { name: 'aloe', category: 'plante grasse', id: '8fp' }, { name: 'succulente', category: 'plante grasse', id: '9vn' } ]; const uniqueData = [...plantList.reduce((map, obj) => map.set(obj.category, obj), new Map()).keys()]; console.log(uniqueData)