亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Jquery 排序表 -> 文本前的數字

Jquery 排序表 -> 文本前的數字

PHP
胡子哥哥 2023-04-28 16:32:36
我正在開發一個等待時間 API 來顯示迪士尼樂園的當前排隊時間。等待時間按字母順序加載到表中?,F在,我使用以下代碼將此表按表頂部的最高等待時間排序為最低等待時間。這就是我想要的:$(document).ready(function(){var sorted = $('#mytable tbody tr').sort(function(b, a) {  var a = $(a).find('td:last').text(), b = $(b).find('td:last').text();  return a.localeCompare(b, false, {numeric: true})})$('#mytable tbody').html(sorted)});這很好用,但正如您在下圖中看到的那樣,“已關閉”和“翻新”等文本值位于表格頂部,高于最長等待時間。我如何更改表格的順序以獲得表格頂部的最長等待時間,最后是文本值?當前訂單,想要更改此所以我想得到:20 min.15 min.5 min.OpenClosedRefurbishment
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

要根據需要進行排序,您需要根據值是否為數字進行不同的排序。如果兩者都是數字,請像您目前所做的那樣進行比較。否則,如果只有一個是數字,則將其排序到開頭;如果兩者都不是數字,則根據您需要的順序 ( Open, Closed, Refurbishment) 進行排序,這可以通過在定義排序順序的對象中查找短語來實現:


var states = {

  'Open': 0,

  'Closed': 1,

  'Refurbishment': 2

};


$(document).ready(function() {

  var sorted = $('#mytable tbody tr').sort(function(b, a) {

    var a = $(a).find('td:last').text(),

      b = $(b).find('td:last').text();

    if (!isNaN(parseInt(a))) {

      if (!isNaN(parseInt(b))) {

        // a and b both numeric

        return a.localeCompare(b, false, {

          numeric: true

        });

      } else {

        // a numeric, b not, sort b last

        return 1;

      }

    } else if (!isNaN(parseInt(b))) {

      // a not numeric, b numeric, sort a last

      return -1;

    } else {

      // a not numeric, b not numeric, sort regular

      return states[b] - states[a];

    }

  });

  $('#mytable tbody').html(sorted)

});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="mytable">

  <tbody>

    <tr>

      <td>Challenge trails</td>

      <td>Refurbishment</td>

    </tr>

    <tr>

      <td>Camp Discovery</td>

      <td>Open</td>

    </tr>

    <tr>

      <td>Soaring</td>

      <td>120 mins</td>

    </tr>

    <tr>

      <td>Fantasia</td>

      <td>20 mins</td>

    </tr>

    <tr>

      <td>Shipwreck Shore</td>

      <td>5 mins</td>

    </tr>

    <tr>

      <td>Rex's Racer</td>

      <td>105 mins</td>

    </tr>

    <tr>

      <td>Slinky Dog</td>

      <td>Closed</td>

    </tr>

  </tbody>

</table>


查看完整回答
反對 回復 2023-04-28
  • 1 回答
  • 0 關注
  • 129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號