簡體   English   中英

如何將此表從最大數量到最小數量排序?

[英]How can I sort this table from largest number to smallest?

嘗試按“ rankscore” td從最大數到最小表排序下表。

<html>
    <head>
        <script src="js/jquery-1.12.3.min.js"></script>
    </head>
    <body>
<h4>Current Rank</h4>
<table id="rank">
    <tbody>
        <tr>
            <td class="namecell">Joe:</td>
            <td class="rankscore">7</td>
        </tr>
        <tr>
            <td class="namecell">Jim:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr>
            <td class="namecell">Megan:</td>
            <td class="rankscore">936</td>
        </tr>
        <tr>
            <td class="namecell">Greg:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr>
            <td class="namecell">Will:</td>
            <td class="rankscore">20</td>
        </tr>
        <tr>
            <td class="namecell">Paul:</td>
            <td class="rankscore">15</td>
        </tr>
        <tr>
            <td class="namecell">Tammy:</td>
            <td class="rankscore">133</td>
        </tr>
        <tr>
            <td class="namecell">Chari:</td>
            <td class="rankscore">123</td>
        </tr>
        <tr>
            <td class="namecell">Ed:</td>
            <td class="rankscore">6</td>
        </tr>
        <tr>
            <td class="namecell">Hank:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr>
            <td class="namecell">Bill:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr>
            <td class="namecell">Al:</td>
            <td class="rankscore">21</td>
        </tr>
        <tr>
            <td class="namecell">Stacy:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr>
            <td class="namecell">Mack:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr>
            <td class="namecell">Ira:</td>
            <td class="rankscore">13</td>
        </tr>
        <tr></tr>
    </tbody>
</table>
</body>

<script>
function sortTable(table, order) {
    var asc   = order === 'asc',
        tbody = table.find('tbody');

    tbody.find('tr').sort(function(a, b) {
        if (asc) {
            return $('td.rankscore', a).text().localeCompare($('td.rankscore', b).text());
        } else {
            return $('td.rankscore', b).text().localeCompare($('td.rankscore', a).text());
        }
    }).appendTo(tbody);
}

sortTable($('#rank'), 'desc');
</script>

</html>

下表列出了當前代碼:

Megan:  936
Joe:    7
Ed:     6
Al:     21
Will:   20
Paul:   15
Tammy:  133
Hank:   13
Jim:    13
Greg:   13
Bill:   13
Ira:    13
Stacy:  13
Mack:   13
Chari:  123

該功能似乎只是在排序時查看第一個數字,而不是考慮所有數字。

我沒有編寫此排序功能,因此很難弄清楚它到底在做什么。 我查找了一個解釋localCompare的頁面,但並沒有太大幫助。

您得到的分數是按字符串順序而不是數字順序排序的。 您需要將文本轉換為數字,然后根據需要與<><=等進行比較。

您需要這樣的東西:

    const aNum = parseInt($('td.rankscore', a).text());
    const bNum = parseInt($('td.rankscore', a).text());

    if (asc) {
        return (aNum === bNum ? 0 : (aNum < bNum ? -1 : 1);
    } else {
        return (aNum === bNum ? 0 : (aNum > bNum ? -1 : 1);
    }

我還沒有測試過,我可能在后面加上<和>,但這是基本思想。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM