【发布时间】:2021-10-24 19:10:54
【问题描述】:
我有信息作为 Javascript 中的地图进入。
我想根据我设置为枚举的类型对其进行排序。
数据如下:
地图(5)
{"Adopted" => 105, "Pending" => 176, "Missing" => 3, "InterestedParties" => 45, "WaitingForPickup" => 15}
虽然这样看可能更有意义:
new Map<string, number>([
['Adopted', 105],
['Pending', 176],
['Missing', 3],
['InterestedParties', 45],
['WaitingForPickup', 15],
]);
我想将这些数据分类为“未收养的动物”、“家养的动物”、“未知状态”等类别,所以我制作了一组映射到枚举类型的数据(所以 AnimalStatusType.Pending 是“待定”)
const metricGroups = {
unAdopted: [
AnimalStatusType.Pending,
AnimalStatusType.InterestedParties,
],
adopted: [
AnimalStatusType.Adopted,
],
unknown: [
AnimalStatusType.Missing,
AnimalStatusType.WaitingForPickup
],
}
我希望我的地图按已采用、未采用和未知的三个不同类别排序,如下所示:
{
adopted: [['adopted', 105]],
unadopted: [['pending', 176],['interestedParties', 45]],
unknown: [ ['missing', 3],['waitingForPickup', 15]],
}
但我很难找到正确映射的任何东西。我认为也许结合Array.from 或reduce 功能可以工作,但搜索主要是拉起Javascript 的.map 功能,这无济于事。
const GroupedData = Array.from(animalData).reduce((acc, metric) => {
acc[metricGroups[metric]].push(metric)
})
【问题讨论】:
标签: javascript arrays sorting multidimensional-array reduce