[编辑:这些都是改变我排序方式的好方法。但是,除非你们中的一个知道如何做,否则我无法更改排序方法。在我的JS中,有一个我没有写的很长的排序算法。我不太确定如何编辑它以合并任何这些排序方法。因此,为什么我要求通过改变字符串本身来使它们按字母顺序排序的方法。]

我有一个带有排序按钮的表,除1列外,其他所有东西都起作用。

如何排序6“,12”和18“?

由于引号的缘故,它们以6“ 18” 12“的顺序排序。我真的不想删除引号,并在标题中指定以英寸为单位的度量值...,我也不想在6之前加上0(理想情况下,我想在6之前放置一个空格,但是该空格在排序时会被忽略。有人有什么想法吗?

我的输入仅在一个简单的数组中定义:

var paras1 = [
  ["K"],
  ["-270°C to 1372°C, –454°F to 2501°F"],
  ['0.125 (1/8")', '0.1875 (3/16")', '0.250 (1/4")'],
  ['6"', '12"', '18"'], //-------THE LINE THAT I CARE ABOUT-------
  ["316SS"],
  ["Grounded", "Ungrounded", "Exposed"],
];


香港专业教育学院尝试以下方法:

 [' 6"', '12"', '18"'] //with space doesnt work
 ['06"', '12"', '18"'] //with 0 works and looks ugly
 ['6', '12', '18']     //works but not what i want


如果您有一些可以帮助排序的创意字符,则可以在第486行尝试使用它们,https://jsfiddle.net/msirkin/duw5nyqe/9/

最佳答案

通过在排序中设置比较函数,确保将字符串作为数字进行比较。

也许您有更好的方法将类名添加到表列中,
但在您的小提琴演示中:https://jsfiddle.net/msirkin/duw5nyqe/9/
我在eo_head_row.appendChild(headCell)之前,以编程方式在622行中为“长度”列添加了“ sorttable_numeric”类。您可以为需要按数字排序的其他列添加更多这样的参数:(k ==“ para4” || k ==“ para5”)。

if (k == "para5") {headCell.className += ' sorttable_numeric';}

10-05 20:33
查看更多