javascript - 按特定状态对项目列表进行排序

标签 javascript sorting

我想按状态对任务列表进行排序,例如,状态为“事件”的任务应分组,然后是已完成的任务,然后应按添加顺序显示具有其他状态的任务:

它应该显示如下内容:

 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/

相关文章:

r - 如何按列对数据框进行排序,首先将某些值放在列中的开头,其余的按字母顺序排列

javascript - 使用 jquery 在按钮单击上添加文本到简单表单

javascript - NodeJs-事件循环只处理 I/O 请求吗?

java - 比较方法违反了它的一般契约 - 如何避免它

php - 仅对关联数组的奇数元素进行排序

mysql - SQL在某些情况下的特殊排序顺序

线程 "main"java.lang.NegativeArraySizeException : -28 中的 Java ArrayList 异常

javascript - 当在对象中找不到键时返回不同的值而不是未定义

javascript - 单击父复选框时选中所有选中的框

javascript - Angular Toastr 回调