javascript - 从来自 MongoDB 的数据中使用 jquery 按名称排序

标签 javascript jquery mongodb

所以我正在尝试构建一个基本的待办事项列表应用程序。我已经完成了大部分工作,但我似乎无法弄清楚如何对我的待办事项列表进行排序。

我只想在 dom 中对其进行排序,而不是在 mongodb 中进行排序。我想单击一个按钮然后对列表进行排序(通过 jquery 添加监听器)。

我有这段代码通过我的数据库并在页面上加载待办事项。

$(document).ready(function(){
    $.getJSON("/api/todos")
    .then(addAllTodos)

    //insert todos from db to page
    function addAllTodos(todos){
        todos.forEach((todo) => {
            //duplicated code made into function
            addSingleTodo(todo);
            //_.sortBy(todo, ['name', 1]);
        });
    };

我尝试从这里使用 sort() 对其进行排序,但没有成功。我尝试使用 lodash,但我相信它只适用于节点。为按钮设置监听器并创建另一个函数也不起作用,主要是因为我认为它只操作一个待办事项,而不是整个列表。

我正在考虑从我的 addAllTodos 中获取数据并对其进行排序,但我被卡住了。 getjson 应该返回一个数组,我相信我想做的是订购所述数组,但我不知道该怎么做。

如有任何帮助,我们将不胜感激。

这里还有addSinlgeTodo函数

function addSingleTodo(todoData){
    //create our new todo
    let newTodo = $("<li><span><i class='far fa-trash-alt'></i></span>" + todoData.name + "</li>");
    //store todo id
    newTodo.data("id", todoData._id);
    //add completed boolean
    newTodo.data("completed", todoData.completed);
    //add completed class to todo
    if(todoData.completed){
        newTodo.addClass("completed");
    }
    //append new todo
    $("ul").append(newTodo);
};

最佳答案

假设/api/todos返回一个数组,这里是一个例子;

The sort function can use a custom compare function that can be found here, basically return -1 if less than, +1 if greater, and 0 if equal. The default sort() only works on strings.

var lst = [{
    name: "adam",
    id: 1
  },
  {
    name: "neocero",
    id: 2
  },
  {
    name: "charlie",
    id: 3
  }
];
console.log(lst); //unsorted
addAllTodos(lst);

function addAllTodos(todos) {
  todos.sort((a, b) => {
    if (a.name < b.name) return -1;
    else if (a.name > b.name) return 1;
    else return 0;
  });
  console.log(todos); //sorted
  //do your magic, now it is sorted.
  //        todos.forEach((todo) => {
  //            //duplicated code made into function
  //            addSingleTodo(todo);
  //        });
};

关于javascript - 从来自 MongoDB 的数据中使用 jquery 按名称排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54895457/

相关文章:

javascript - .ease(d3.easeLinear) 产生无法读取未定义的属性 'indexOf'

javascript - 使用 jQuery.ajax 的 HEADERS_RECEIVED 的 readState 事件

javascript - 直接从 JS 提交 PHP 表单(无 HTML)

mongodb - 在 MongoDB + PHP 中为新集合创建索引

mongodb - 在 MongoDB 中获取数组的第一个和最后一个元素

node.js - 需要比较mongodb中2个不同的日期字段

Javascript 检查地址路径链接是否可用

javascript - 如何在纯 JavaScript 中仅绑定(bind)一次事件监听器?

javascript - jQuery Slide Down - 从左上角滑动图片

javascript - 是否可以为图表js添加带文本的条形点