当前位置: 首页 > 知识库问答 >
问题:

Javascript排序列表仅适用于

羊毅庵
2023-03-14

我正在尝试实现一个类似问题的系统。这些问题应该根据数据属性“投票”重新排序。因此,每次从套接字接收到like事件时,都会调用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;
  }
}

共有2个答案

须旭
2023-03-14

您的排序函数正常工作。但是,它并不稳定。你应该写

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

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

您提供的代码不是问题的根源。没有一个不起作用的例子,我们无法提供任何进一步的帮助。请制作一个最小的笔或CodeSandBox。

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

壤驷经国
2023-03-14

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

  • 如果AB
  • 之前,则为负数
  • 如果BA
  • 之前,则为正数
  • 如果相同则为零

您的代码没有做最后一件事。这使得sort无法正确执行其工作。

相反:

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

(假设vote的值是数值。)

 类似资料:
  • 问题内容: 我有一组三个列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。 每个列表项都需要有自己的ID,因为它们每个都有各自的背景图像。数字必须是文本节点,以便用户可以编辑它们。 问题答案: 这可能是最快的方法,因为它不使用jQuery: 像下面这样调用函数: 您可以以相同的方式对其他列表进行排序,如果列表类在同一页面上还有其他元素,则应给您的ul一

  • 问题内容: 如何使用Collections.sort()或其他排序方法按字典顺序对Java中的列表列表进行排序? 问题答案: 您将必须实现自己的类并将实例传递给 然后分类很容易

  • 我有一个点列表,每个点都是一个大小为2的小列表。我想按x的递增顺序对点列表进行排序,如果x值相等,我就按y的递减顺序排序来打破平局。 我编写了一个自定义比较器来对点进行排序,如下所示: 以下是排序前的输入: 以下是使用上述比较器排序后产生的结果: 观察:- 输入按x的升序排序。 (5,12)被正确地放在(5,10)之前 (9,-15)被正确地放在(9,-1000)之前 然而,(10001,-10)

  • 本文向大家介绍如何使用JavaScript对HTML列表进行排序?,包括了如何使用JavaScript对HTML列表进行排序?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript对HTML列表进行排序,代码如下- 示例 输出结果 上面的代码将产生以下输出- 在点击“点击排序”按钮-

  • 主要内容:SortedList 类的中的属性,SortedList 类的中的方法在 C# 中,SortedList 类用来表示键/值对的集合,这些键/值对按照键值进行排序,并且可以通过键或索引访问集合中的各个项。 我们可以将排序列表看作是数组和哈希表的组合,其中包含了可以使用键或索引访问各项的列表。如果您使用索引访问各项,那么它就是一个动态数组(ArrayList),如果您使用键访问各项,那么它就是一个哈希表(Hashtable)。另外,集合中的各项总是按键值进行排序。 So

  • 问题内容: 我有以下课程。在此,虹膜是具有某些属性的另一类。 我想对此数组列表进行排序(即列表 helperList),基于距离参数降序。我已经编写了以下方法,但是它不起作用。 有人可以提出解决方案吗? 问题答案: 为什么不让您的类实现接口,然后使用Collections类提供的内置排序方法。 我认为这可以解决问题。另外,此方法是稳定的。 http://docs.oracle.com/javase