iJa*_*ava 2 typescript lodash angular
我需要按状态对项目列表进行排序,但我不确定应该采用哪种方法,它是创建比较器还是某种排序技术?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"}
]
Run Code Online (Sandbox Code Playgroud)
示例排序列表(输出)排序为失败 -> 进行中 -> 保留 -> 待定 -> 成功
[
{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"},
]
Run Code Online (Sandbox Code Playgroud)
我使用的堆栈是 Angular + Typescript。
编辑:列表有点大,通常约 15k 行。
您可以根据其他数组中的值对数组进行排序:
let sortOrder = ['Failed', 'In progress', 'Reserved', 'Pending', 'Success'];
let array = [
{ 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" }
];
array.sort((a, b) => {
return sortOrder.indexOf(a.status) - sortOrder.indexOf(b.status);
});
console.log(array);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1230 次 |
最近记录: |