1

ここでは、javascript を使用して英数字の文字列値を並べ替えています。ただし、文字列のみを並べ替えます。必要なのは、文字列から数値を分割し、数値を並べ替えることです。コードは次のとおりです。

 function sortUnorderedList(ul, sortDescending) {
        if (typeof ul == "string")
            ul = document.getElementById(ul);

        var lis = ul.getElementsByTagName("li");
        var vals = [];
        for (var i = 0, l = lis.length; i < l; i++)
            vals.push(lis[i].innerHTML);

        vals.sort();

        if (sortDescending)
            vals.reverse();

        for (var i = 0, l = lis.length; i < l; i++)
            lis[i].innerHTML = vals[i];
    }

なにか提案を?

編集:現在の結果

PPG 101
PPG 102
PPG 57
PPG 58
PPG 99

期待される結果:

PPG 57
PPG 58
PPG 99
PPG 101
PPG 102
4

3 に答える 3

2

数値の並べ替えを実行するには、並べ替えメソッドを呼び出すときに関数を引数として渡す必要があります。

vals.sort(function(a, b) { 
    return (a-b);
});

詳細については、 http://www.javascriptkit.com/javatutors/arraysort.shtmlを参照してください。

于 2012-08-13T08:59:19.267 に答える
1

最初に文字列で並べ替え、次にスペースの後の数値で並べ替える場合は、関数に渡す独自の関数を次のように指定する必要がありますsort

arr.sort(function(a,b) { 
  a = a.split(' ');
  b = b.split(' ');
  if (a[0] == b[0]) {
    return parseInt(a[1]) - parseInt(b[1]);
  }
  return a[0] > b[0];
});

上記の例では、最初に文字列で並べ替え、次に文字列の後の数字で (数値的に) 並べ替えます。上記のコードは、ソートされる値が常に上記の形式であり、入力のチェックが欠けているという前提で機能します。

于 2012-08-13T09:09:03.590 に答える