javascript - 使用 jquery sort 按两个数据属性对元素进行排序

标签 javascript jquery

我有一个带有 2 个数据属性的 li 元素,基本上我想首先整理出 data-arrange 属性, 这是元素

 <ul>
        <li data-arrange="2" data-rdays="100">John</li>
        <li data-arrange="1" data-rdays="300">Paul</li>
        <li data-arrange="1" data-rdays="500">Bryan</li>
        <li data-arrange="3" data-rdays="240">Mark</li>
        <li data-arrange="3" data-rdays="500">Victor</li>
        <li data-arrange="4" data-rdays="200">Tess</li>
    </ul>

所以从给定的元素它应该像这样返回

data-arrange属性值排列

    1 
    1
    2
    3
    3
    4

然后我想根据 data-arrange 属性排列使用 data-rdays 属性从最高到最低对其进行排序,所以它看起来像这样

1 500
1 300
2 100
3 500
3 240
4 200

结果应该是这样的

Bryan
Paul
John
Victor
Mark
Tess

这是我迄今为止尝试过的:

function sort_li(a, b){
        return ($(b).data('arrange')) < ($(a).data('arrange')) ? 1 : -1; 

  /* Other return staments that I've tried
      return ($(a).data('rdays') && $(b).data('arrange')) < ($(b).data('rdays') 
      && $(a).data('arrange')) ? 1 : -1;     
     return new Date($(a).data("date")) - new Date($(b).data("date")); */

     }   

有什么办法可以实现这一点吗?谢谢。

最佳答案

您可以首先对 arrange 数据进行排序,然后使用 array#sort 对 rdays 数据进行相同 arrange 数据排序.

$(function() {
  $("ul li").sort((a,b) => {
      return $(a).data('arrange') - $(b).data('arrange') || $(b).data('rdays') - $(a).data('rdays');
  }).appendTo('ul');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li data-arrange="2" data-rdays="100">John</li>
  <li data-arrange="1" data-rdays="300">Paul</li>
  <li data-arrange="1" data-rdays="500">Bryan</li>
  <li data-arrange="3" data-rdays="240">Mark</li>
  <li data-arrange="3" data-rdays="500">Victor</li>
  <li data-arrange="4" data-rdays="200">Tess</li>
</ul>

关于javascript - 使用 jquery sort 按两个数据属性对元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063119/

相关文章:

javascript - 使用 Javascript 生成占用的 DIV

javascript - 未定义的 AJAX Laravel 5.2 消息

javascript - 如何在 jQuery 中获取当前行上方(或之前)的表行?

javascript - 在对象构造函数中使用 'this' 变量

javascript - Chart.js - 将数据集中的数据绑定(bind)到特定的图表标签

JavaScript ES2017 : Nested async await in a class

javascript - JS/jQuery : Is it possible to extract content from the browser's console?

javascript - return Json 函数没有更新我的下拉列表

jquery - 如何从 jQuery.load() 响应中获取 body 元素?

javascript - 我对 jQuery 的 next 扩展的表现出乎意料