在JavaScript中,表格是一種常見的數據展示方式,但有時候我們需要對表格進行排序,以方便查找和比較。本文將介紹JavaScript中如何對表格進行升序和降序排序。
首先,讓我們看一個示例表格:
現在我們需要根據年齡對表格進行排序。我們可以使用JavaScript中的sort()方法來進行排序。sort()方法以一個可選參數作為比較函數,如果省略參數,sort()方法默認按照Unicode碼點進行排序。
下面是按照年齡升序排序的代碼:
我們首先獲取到表格及其行,然后遍歷行獲取到每一行的年齡值,用Number()方法轉換為數字進行比較,如果行需交換,則進行交換。
如果我們需要按照年齡降序排序,則只需要稍微修改一下比較函數即可。下面是降序排序的代碼:
通過這兩個示例,我們可以看出如何在JavaScript中進行表格的排序,只需要編寫相應的比較函數即可滿足不同的排序需求。
首先,讓我們看一個示例表格:
<table> <thead> <tr> <th>姓名</th> <th>年齡</th> <th>性別</th> </tr> </thead> <tbody> <tr> <td>張三</td> <td>25</td> <td>男</td> </tr> <tr> <td>李四</td> <td>30</td> <td>男</td> </tr> <tr> <td>王五</td> <td>20</td> <td>女</td> </tr> </tbody> </table>
現在我們需要根據年齡對表格進行排序。我們可以使用JavaScript中的sort()方法來進行排序。sort()方法以一個可選參數作為比較函數,如果省略參數,sort()方法默認按照Unicode碼點進行排序。
下面是按照年齡升序排序的代碼:
function sortTableByAgeAsc() { var table, rows, switching, i, x, y, shouldSwitch; table = document.querySelector("table"); switching = true; while (switching) { switching = false; rows = table.getElementsByTagName("tr"); for (i = 1; i < (rows.length - 1); i++) { shouldSwitch = false; x = rows[i].getElementsByTagName("td")[1]; y = rows[i + 1].getElementsByTagName("td")[1]; if (Number(x.innerHTML) > Number(y.innerHTML)) { shouldSwitch = true; break; } } if (shouldSwitch) { rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; } } }
我們首先獲取到表格及其行,然后遍歷行獲取到每一行的年齡值,用Number()方法轉換為數字進行比較,如果行需交換,則進行交換。
如果我們需要按照年齡降序排序,則只需要稍微修改一下比較函數即可。下面是降序排序的代碼:
function sortTableByAgeDesc() { var table, rows, switching, i, x, y, shouldSwitch; table = document.querySelector("table"); switching = true; while (switching) { switching = false; rows = table.getElementsByTagName("tr"); for (i = 1; i < (rows.length - 1); i++) { shouldSwitch = false; x = rows[i].getElementsByTagName("td")[1]; y = rows[i + 1].getElementsByTagName("td")[1]; if (Number(x.innerHTML) < Number(y.innerHTML)) { shouldSwitch = true; break; } } if (shouldSwitch) { rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); switching = true; } } }
通過這兩個示例,我們可以看出如何在JavaScript中進行表格的排序,只需要編寫相應的比較函數即可滿足不同的排序需求。