我想按状态对任务列表进行排序,例如,状态为“事件”的任务应分组,然后是已完成的任务,然后应按添加顺序显示具有其他状态的任务:
它应该显示如下内容:
const taskToShows = [
{task: "task7", status: "active"},
{task: "task6", status: "active"},
{task: "task5", status: "active"},
{task: "task8", status: "completed"},
{task: "task4", status: "completed"},
{task: "task1", status: "pending"},
{task: "task2", status: "other status"},
{task: "task3", status: "progress"},
]
我的方法是使用 sort() 我首先可以订购,但后来它订购了所有任务,只需要顶部的事件和已完成的任务以及用户添加的顺序中的所有其他任务
if(this.status === 'active' || this.status === 'completed'){
this.tasksToShow = this.tasksList.sort((a, b) => (a.status.toLowerCase() >
b.status.toLowerCase()) ? 1 : (a.status.toLowerCase() === b.status.toLowerCase() )
? ((a.status > b.status) ? 0 : -1) : -1 )
}
最佳答案
试试这个-
const taskToShows = [
{task: "task7", status: "active"},
{task: "task6", status: "active"},
{task: "task5", status: "active"},
{task: "task8", status: "completed"},
{task: "task4", status: "completed"},
{task: "task1", status: "pending"},
{task: "task2", status: "other status"},
{task: "task3", status: "progress"},
];
taskToShows.sort((a, b) => {
const arr = ['active', 'completed'];
return arr.includes(a.status) || arr.includes(b.status) ? 1 : -1;
});
console.log(taskToShows);
.as-console-wrapper{min-height: 100%!important; top: 0}
关于javascript - 按特定状态对项目列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70488421/