Esto se ha publicado una y otra vez y después de leerlos todos, todavía no sé qué estoy haciendo mal. Entiendo que hay muchas maneras de hacer esto y tengo la sensación de que las confundí.
Estoy tratando de obtener el valor único de serviceType, por lo que en lugar de tener Cars Now, Cars Now, Vans Now, solo debería tener Cars No, Vans Now.
Ver código adjunto
const preFilteredRows = [ { "serviceType": "Cars Now", "applictionType": "Direct", "wheelType": "4x4" }, { "serviceType": "Cars Now", "applictionType": "web", "wheelType": "2x4" }, , { "serviceType": "Vans Now", "applictionType": "Direct", "wheelType": "2x4" } ] let tempArr = []; preFilteredRows.forEach(row => { if(row.values[serviceType].length == 1) tempArr.push(row.values[serviceType][0]) }) /* return [...new Set(tempArr)] */ newServiceSet = [...new Set(tempArr)] console.log(newServiceSet)ACTUALIZACIÓN: Muchas gracias a todos por sus comentarios, realmente aprecio su ayuda con mi aprendizaje.
Una parte que olvidé agregar a mi pregunta y me doy cuenta es que no solo necesito los valores únicos, sino que también necesito que se muestren como en la imagen a continuación para que cada valor tenga un valor y una etiqueta. Ya no necesito el conteo.
Si te entiendo bien quieres
[ "Cars Now", "Vans Now" ]Haga un mapa y filtre y luego haga su operador de propagación para valores únicos.
const preFilteredRows = [ { "serviceType": "Cars Now", "applictionType": "Direct", "wheelType": "4x4" }, { "serviceType": "Cars Now", "applictionType": "web", "wheelType": "2x4" }, , { "serviceType": "Vans Now", "applictionType": "Direct", "wheelType": "2x4" } ] let tempArr = preFilteredRows.map(row => row.serviceType) // map extracts the serviceType .filter(service => service); // filter removes any undefined/empty values newServiceSet = [...new Set(tempArr)] // only keeps unique values console.log(newServiceSet)Puedes hacerlo así:
map - para mapear cada objeto de la matriz a su valor de propiedad serviceTypenew Set : para obtener todos los valores únicos de la matriz generada en el paso anterior const preFilteredRows = [ { "serviceType": "Cars Now", "applictionType": "Direct", "wheelType": "4x4" }, { "serviceType": "Cars Now", "applictionType": "web", "wheelType": "2x4" }, { "serviceType": "Vans Now", "applictionType": "Direct", "wheelType": "2x4" } ]; const unique_types = [...new Set(preFilteredRows.map(item => item.serviceType))]; console.log(unique_types);Una combinación de mapa y filtro haría este trabajo.
const preFilteredRows = [ { "serviceType": "Cars Now", "applictionType": "Direct", "wheelType": "4x4" }, { "serviceType": "Cars Now", "applictionType": "web", "wheelType": "2x4" }, , { "serviceType": "Vans Now", "applictionType": "Direct", "wheelType": "2x4" } ] const n = [...new Set( preFilteredRows.map(obj => obj.serviceType)) ].filter(f => f); console.log(n)