構文: arrayObject.sort(sortby); パラメータ sortby はオプションです。ソート順を指定します。関数である必要があります。
sort() メソッドは、配列の要素をソートするために使用されます。
このメソッドがパラメータなしで呼び出された場合、配列内の要素はアルファベット順、より正確には文字エンコード順に並べ替えられます。これを達成するには、
まず、比較のために配列の要素を (必要に応じて) 文字列に変換します。
他の基準で並べ替えたい場合は、2 つの値を比較し、2 つの値の相対的な順序を表す数値を返す比較関数を提供する必要があります。
比較関数には 2 つのパラメータ a と b が必要で、その戻り値は次のとおりです:
a が b より小さい場合、a は並べ替えられた配列内で b より前に表示され、0 より小さい値を返す必要があります。
a が b に等しい場合、0 を返します。
a が b より大きい場合、0 より大きい値を返します。
js の sort() メソッドを使用して数値を並べ替えます
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; alert(arr.sort(); </script>
戻り値: [1, 116, 12, 18, 23, 34, 37, 50, 56, 8]
上記のコードは、サイズに従って数値を並べ替えません。これを実現するには、並べ替え関数を使用する必要があります。
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; function sequence(a,b){ if (a>b) { return 1; }else if(a<b){ return -1 }else{ return 0; } } console.log(arr.sort(sequence)); </script>
戻り値: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (問題ありません)
もちろん、sort() メソッドに並べ替え関数を記述することもできます。
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; var arr2 = arr.sort(function(a,b){ if (a>b) { return 1; }else if(a<b){ return -1 }else{ return 0; } }) console.log(arr2); </script>
戻り値: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (どちらでも問題ありません)
は、この
の書き方に簡略化することもできます。
なぜなら、a が b より小さい場合、並べ替えられた配列では a が b よりも前に出現する必要があり、0 より小さい値が返されるからです。
a が b に等しい場合、0 を返します。
a が b より大きい場合、0 より大きい値を返します
<script> var arr = [23,12,1,34,116,8,18,37,56,50]; function sequence(a,b){ return a - b; } console.log(arr.sort(sequence)); </script>
戻り値: [1, 8, 12, 18, 23, 34, 37, 50, 56, 116] (これも正しい)
アルファベット順での並べ替えははるかに簡単です。sort() メソッドを直接使用するだけです。
<script> var arr = ['fanda','banner','find','zoom','index','width','javascript']; console.log(arr.sort()); </script>
戻り値: ["banner", "fanda", "find", "index", "javascript", "width", "zoom"]
さて、JavaScript を勉強しているときに、sort() 関数が少しおかしいことに気づきました (私のレベルの問題かもしれません -_-!) ので、ここに見つけたことを記録しておきます。 sort() メソッドのパラメータは非常に奇妙です。これらは関数である必要がありますが、オプションのパラメータでもあります。パラメータがない場合は、デフォルトで文字列の辞書順に配置されます(数値も変換されます)。処理のために文字列に変換します。このパラメータは、次のような 2 つの値のサイズを比較できるようにするためのものです:
アプリケーションは次のとおりです (この例は非常に古典的です!!):
<script type="text/javascript"> function sortNumber(a,b){return a - b} var arr = new Array(3) arr[0] = "10"; arr[1] = "5"; arr[2] = "4"; document.write(arr + "<br />"); document.write(arr.sort(sortNumber)); </script>
その後、10,5,4 の元の配列は 4,5,10 になります。これは、当然ながら、sortNumber には 2 つのパラメーターがあるはずですが、呼び出し時にはパラメーターがまったくありません。 ? 比較する?これは次のようになります。arr が最初の数値からソートを呼び出すと、10 より前に比較する数値がないため、2 番目の数値である 5 に進みます。このとき、10 と 5 が比較されます。これはsortNumberと呼ばれ、10と5を渡します。これがsort()の性質です。