【问题标题】:Sort ToDoList by alphabetically - completed OR Incompleted Tasks按字母顺序对 ToDoList 排序 - 已完成或未完成的任务
【发布时间】:2019-06-24 03:25:50
【问题描述】:
var taskList =[ 
{completed:false,task:"to home work"}, 
{completed:true,task:"test"},
{completed:true,task:"app"},
{completed:false,task:"doing work"},
{completed:false,task:"sleeping"}, 
{completed:true,task:"to do"},
{completed:true,task:"to home work"},
{completed:false,task:" work"},];

这是一个列表,我在下面显示这个列表

COMPLETED TASK           IMCOMPLE TASK
test                      to home work
app                       doing work
to do                     sleeping
to home work              work

现在我想按字母顺序对每个列表进行排序 - 一个接一个而不影响其他列表

喜欢
如果我想对已完成的任务进行排序,那么只需对该列表进行排序,不要触及不完整的任务。

【问题讨论】:

  • 你如何显示列表?
  • @EricSvitok 目前我正在使用过滤器来显示列表。通过使用过滤器,我得到了两个单独的列表。 var completedTasks = tasks.filter((task) => task.completed);
  • 你试过什么?请edit您的问题并将您的代码发布为minimal reproducible example。您可能还想阅读How to Ask 并选择tour
  • 评论有助于澄清问题,但您应该通过编辑将您的答​​案整合到您的问题中,使其“自成一体”。
  • 只是语法修正,暂时没有更多的补充。

标签: javascript reactjs redux redux-form


【解决方案1】:

您可以使用 sort 方法而忽略对指定完成值的任务进行排序。

在此示例中,您可以将 true 传递给 sortTasks 函数以对已完成的任务进行排序,将 false 传递给未完成的任务。 p>

        var taskList =[ 
          {completed:false,task:"z"}, 
          {completed:true,task:"d"},
          {completed:true,task:"c"},
          {completed:false,task:"y"},
          {completed:false,task:"x"}, 
          {completed:true,task:"b"},
          {completed:true,task:"a"},
          {completed:false,task:"w"},];
        
        function sortTasks(isCompleted) {
          return taskList.sort((a,b) => {
            if ((a.completed !== isCompleted) || (b.completed !== isCompleted)) return 0;
            if (a.task > b.task) return 1;
            if (b.task > a.task) return -1; 
          });
        }
    
      //console.log(sortTasks(true)); // sort completed tasks only
      // console.log(sortTasks(false))); // sort incomplete tasks only
      var newArray = sortTasks(true).filter(a => a.completed);
      console.log(newArray);

【讨论】:

  • 尝试运行代码sn-p。那是你想要的输出吗?
  • 对不起@eric-svltok 但这不是我想要的输出。您的代码 OUTPUT //最后几行 var newArray = sortTasks(true); var filterArray = newArray.filter((a)=>a.completed);控制台.log(filterArray); 0:{完成:真,任务:“c”} 1:{完成:真,任务:“d”} 2:{完成:真,任务:“a”} 3:{完成:真,任务:“b "} 我想显示为 abcd
  • @user10992157 当我运行代码 sn-p 它以正确的顺序显示时,这很奇怪......我在示例的末尾添加了过滤器。尝试运行它,看看它是否适合您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多