1

我有一个 html 页面,其中有一个可以排序的字段。我还创建了一个 javascript 函数,可以按顺序对该字段进行排序。让我们假设 p_cSort 是该字段的“id”名称。

function change_sort(neworder) {
 document.sortForm.p_cSort.value = neworder;
 document.sortForm.submit();

但是,当我有像

12.34
12-35
12.36
12-33

我在我的搜索页面上搜索它们。返回的结果是

12.34
12.36
12-33
12-35

我怎样才能忽略字符“。” 和“-”排序时?

所以我正在寻找的结果应该是:

12-33
12.34
12-35
12.36
4

2 回答 2

1

简短的回答是使用替换和排序功能:

"12.34".replace(/[.-]/, '')

完整答案

var a = ["12.34", "12-35", "12.36", "12-33"];
var b = a.sort(function(a, b){
 return parseInt(a.replace(/[.-]/, '')) - parseInt(b.replace(/[.-]/, ''))
});
// now b contain sorted array
// ["12-33", "12.34", "12-35", "12.36"]
于 2014-03-12T18:20:24.350 回答
1

你为什么不做一个自定义的排序功能,就像这样:

var x = ['12.5', '11.3', '13-5', '10-0'];
x.sort(function(a, b){
    a = a.replace(/[-]/, '.');
    b = b.replace(/[-]/, '.');
    if( parseInt(a) < parseInt(b) ) return -1;
    if( parseInt(a) > parseInt(b) ) return 1;
    return 0;
});

输出:

["10-0", "11.3", "12.5", "13-5"]

如果您有 125.5 等,这也将起作用。因为 the.和 the-都在比较中使用。

>= 100 的示例

所以输入:

["100-0", "11.3", "12.5", "13-5"]

将输出

["11.3", "12.5", "13-5", "100-0"]
于 2014-03-12T18:27:37.020 回答