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

カスタムソート関数を次のように作成してみませんか:

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 などを使用している場合にも機能します。これは、.と の-両方が比較で使用されているためです。

>= 100 の例

入力:

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

出力します

["11.3", "12.5", "13-5", "100-0"]
于 2014-03-12T18:27:37.020 に答える
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 に答える