【发布时间】:2020-01-03 06:50:50
【问题描述】:
我需要按状态对项目列表进行排序,但我不确定应该采用哪种方法,是创建比较器还是某种排序技术? lodash 会在这里工作吗?
示例输入列表:
[
{id: 1, name: "name1", status: "Failed"},
{id: 2, name: "name2", status: "Success"},
{id: 3, name: "name3", status: "In progress"},
{id: 4, name: "name4", status: "Reserved"},
{id: 5, name: "name5", status: "Pending"}
]
以失败 -> 进行中 -> 保留 -> 待处理 -> 成功排序的示例排序列表(输出)
[
{id: 1, name: "name1", status: "Failed"},
{id: 3, name: "name3", status: "In progress"},
{id: 4, name: "name4", status: "Reserved"},
{id: 5, name: "name5", status: "Pending"}
{id: 2, name: "name2", status: "Success"},
]
我使用的堆栈是 Angular + Typescript。
编辑:列表有点大,通常大约 15k 行。
【问题讨论】:
-
我认为 arr.sort((a, b) => (b.status > a.status)) 应该做的工作
-
但这只是按字母顺序排序吗?我的意思是,如果出现一些新状态,可以说“Astatus”,我希望它位于列表的末尾。
-
我会建议您将状态映射为数字,例如:“失败”=> 0、“在 porgress”=> 1。这样您就可以清楚地看到排序是否有效
标签: angular typescript lodash