This has been posted time and time again and after reading them all, I still don’t know what I’m doing wrong. I understand there are so many ways to do this and I get the feeling I’ve mixed them up.
I’m trying to get the uniques value from serviceType so rather than having Cars Now, Cars Now, Vans Now, I should only have Cars No, Vans Now.
See attached code
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)
UPDATE:
Thank you all so much for your feedback, I really do appreciate your help with my learning.
One part I forgot to add to my question and just realise is, I not only need the uniques values, but I also need them displayed like the below image so each value has a value and a label. I don’t need the count anymore.
>Solution :
If I understand correctly you want
[
"Cars Now",
"Vans Now"
]
Do a map and filter and then do your spread operator for unique values.
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)
