微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript 排序列表仅适用于

如何解决Javascript 排序列表仅适用于

我正在尝试实施类似系统的问题。 问题应该根据数据属性“投票”重新排序。 因此,每次从套接字接收到类似事件时,都会调用 sort 函数。 第一次遇到喜欢的问题时,一切正常,列表已排序。 但随后它停止排序。我已经检查了数据值。

这是我的js函数

function sortQuestionList() {
  $('#questionList li').sort(sort_li).appendTo('#questionList');
        
  function sort_li(a,b) {
    return ($(b).data('Vote')) < ($(a).data('Vote')) ? -1 : 1;
  }
}

解决方法

您的 sort_li 函数没有返回 sort 期望的值。它应该返回:

  • 如果 a 出现在 b 之前,则为负数
  • 如果 b 出现在 a 之前,则为正数
  • 如果相同则为零

你的代码没有做最后一件事。这使得 sort 无法正常工作。

相反:

function sortQuestionList() {
    $("#questionList li").sort(sort_li).appendTo("#questionList");
          
    function sort_li(a,b) {
        return $(a).data("vote") - $(b).data("vote");  // ***
    }
}

(假设 vote 的值是数字。)

,

您的排序功能有效。但是,它并不稳定。你应该写

  function sort_li(a,b) {
    return $(b).data("vote") - $(a).data("vote");
  }

无论如何,这不是你的问题。 我在这里做了一个例子,它工作得很好:https://codesandbox.io/s/sort-questions-stackoverlow-49hvi?file=/src/index.js

您提供的代码不是问题的根源。 如果没有非工作示例,我们将无法提供任何进一步的帮助。请制作一个最小的笔或代码盒。

我只能说:确保每次更新列表项时都调用排序函数。确保没有其他函数覆盖这些更改。确保使用正确的属性('data-votes' 而不是 'votes')。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。