Javascript 按属性JS/Jquery对Dom元素排序

Javascript 按属性JS/Jquery对Dom元素排序,javascript,sorting,dom,Javascript,Sorting,Dom,如果其中一个属性没有值,则我的排序函数不起作用:例如: JS: HTML: 正如您从屏幕截图中看到的,只从6排序 如何将空值排序到底部?或者如何回避这个问题 谢谢。找到了我的答案: 上面的工作对我来说,它可以应用在DOM元素的情况下 < P>设置空白数据点,使用最大值 功能排序按顺序A、b排序{ const startA=parseInt$a.data'order'| | Number.MAX_值; const startB=parseInt$b.data'order'| | Number

如果其中一个属性没有值,则我的排序函数不起作用:例如:

JS:

HTML:

正如您从屏幕截图中看到的,只从6排序

如何将空值排序到底部?或者如何回避这个问题

谢谢。

找到了我的答案:


上面的工作对我来说,它可以应用在DOM元素的情况下

< P>设置空白数据点,使用最大值

功能排序按顺序A、b排序{ const startA=parseInt$a.data'order'| | Number.MAX_值; const startB=parseInt$b.data'order'| | Number.MAX_值; 返回startA===startB?0:startA>startB?1:-1; } $'eventList'。追加$'eventList li'。按顺序排序 要素5 要素3 要素6 要素1 要素2 要素4
很好的解决方案它也有效我还缺少了parseInt,在我的例子中,我使用的是动态距离和浮点,在100.0和50.0的情况下,它不会按预期排序,谢谢你的建议。我使用了你的解决方案,它一直有效,直到引入浮点指向数,但是它通过更改为parseFloat进行了修复,但是没有还有一个介绍是0.0,它不起作用,我可以尝试什么?在最后调用另一个函数来移动顶部的元素。任何建议0都将被视为错误值,因此您需要使用Awesome!超级Thnks
function sortEventsByOrder(a,b) {
        const startA = parseInt($(a).data('order'));
        const startB = parseInt($(b).data('order'));    
        return startA - startB;
    }
    $('#eventList').html($('#eventList li').sort(sortEventsByOrder))
<html>
  <head>
    <link rel="stylesheet" href="lib/style.css">
    <script src="lib/script.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  </head>

  <body>


<ul id="eventList">
   <li data-order="5">Element 5</li>
   <li data-order="">Element 3</li>
   <li data-order="6">Element 6</li>
   <li data-order="1">Element 1</li>
   <li data-order="2">Element 2</li>
   <li data-order="4">Element 4</li>
</ul>
  </body>
</html>
function alphabetically(ascending) {

return function (a, b) {

// equal items sort equally
if (a === b) {
    return 0;
}
// nulls sort after anything else
else if (a === null) {
    return 1;
}
else if (b === null) {
    return -1;
}
// otherwise, if we're ascending, lowest sorts first
else if (ascending) {
    return a < b ? -1 : 1;
}
// if descending, highest sorts first
else { 
    return a < b ? 1 : -1;
}

};

}

 var arr = [null, 'a', 'b', null, 'd'];

 console.log(arr.sort(alphabetically(true)));
 console.log(arr.sort(alphabetically(false)));