I have information coming in as a Map in Javascript.
I want to sort it based on types I have set as an enum.
The data looks like this:
Map(5)
{"Adopted" => 105, "Pending" => 176, "Missing" => 3, "InterestedParties" => 45, "WaitingForPickup" => 15}
Though it may make more sense when seen this way:
new Map<string, number>([
['Adopted', 105],
['Pending', 176],
['Missing', 3],
['InterestedParties', 45],
['WaitingForPickup', 15],
]);
I want to sort this data into categories like "unadopted animals", "homed animals", "Unknown status", so I made a group of data that map to enum types (so AnimalStatusType.Pending is "Pending")
const metricGroups = {
unAdopted: [
AnimalStatusType.Pending,
AnimalStatusType.InterestedParties,
],
adopted: [
AnimalStatusType.Adopted,
],
unknown: [
AnimalStatusType.Missing,
AnimalStatusType.WaitingForPickup
],
}
I want to end up with my Map sorted by the three different categories adopted, unadopted, and unknown to look something like this:
{
adopted: [['adopted', 105]],
unadopted: [['pending', 176],['interestedParties', 45]],
unknown: [ ['missing', 3],['waitingForPickup', 15]],
}
but I'm having a bit of difficulty finding anything that does the mapping properly. I think maybe combining Array.from or a reduce functionality can work, but searching mostly pulls up Javascript's .map functionality which is not helping.
const GroupedData = Array.from(animalData).reduce((acc, metric) => {
acc[metricGroups[metric]].push(metric)
})