为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 javascript 中对带有负数的表进行排序

如何在 javascript 中对带有负数的表进行排序

料青山看我应如是 2022-12-09 15:09:07
我使用此代码对各种类型的数据(日期、数字、字符串等)进行排序。它在大多数情况下都有效,但是当我尝试对包含负数的数字的列进行排序时,它无法正确排序。假设我喜欢按降序对第 3 列进行排序。就像现在一样,它排序为 0,负数将被忽略。 function sortcolumn(value) { // alert(value)   let table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;    table = document.getElementById("ControlPanelListOfPAGAVEISPendentesTable");  switching = true;  dir = "desc";  while (switching) {    switching = false;    rows = table.rows;    for (i = 1; i < (rows.length - 1); i++) {      shouldSwitch = false;      x = rows[i].cells[value].textContent.trim().toLowerCase();      y = rows[i + 1].cells[value].textContent.trim().toLowerCase();      const num = /^\d/.test(x)      const date = num && x.indexOf("/") != -1;      if (date) {        let [dd, mm, yyyy] = x.split("/");        x = new Date(yyyy, mm - 1, dd, 15, 0, 0, 0).getTime();        [dd, mm, yyyy] = y.split("/");        y = new Date(yyyy, mm - 1, dd, 15, 0, 0, 0).getTime();      }      else if (num) {         x = +x.replace(",", ".")          y = +y.replace(",", ".");      }      if (dir == "asc") {          shouldSwitch = x > y      } else if (dir == "desc") {          shouldSwitch = x < y      }      if (shouldSwitch) break;    }    if (shouldSwitch) {      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);      switching = true;      switchcount++;    } else {      if (switchcount == 0 && dir == "asc") {        dir = "desc";        switching = true;      }    }  }}table {  border-spacing: 0;  width: 100%;  border: 1px solid #ddd;}th, td {  text-align: left;  padding: 1px;}tr:nth-child(even) {  background-color: #f2f2f2}
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

num = /^\d/.test(x)返回false负数字符串,因为“-”不是数字...



查看完整回答
反对 回复 2022-12-09
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信