JavaScript をしばらく使ったことがある人なら、配列ソート関数 sort は配列プロトタイプのメソッド、つまり array.prototype.sort() や sort(compareFunction) であることを知っているはずです。ここで、compareFunction はMozilla MDN の説明を見てみましょう:
compareFunction が指定されていない場合、要素は文字列に変換され、辞書順 (数値ではなく「辞書」または「電話帳」) で文字列を比較することによって並べ替えられます。たとえば、辞書順では「80」が「9」の前になります。ただし、数値ソートでは 9 は 80 より前に来ます。
以下の簡単な例をいくつか見てください:
// 出力 ["a", "b", "c"]
console.log(["c", "b", "a"].sort());
// 出力 [1, 2, "a", "b"]
console.log(["b", 2, "a", 1].sort());
上記の例からわかるように、デフォルトでは辞書内でアルファベット順に並べ替えられます。
幸いなことに、sort は次の例のようにカスタム比較関数を受け入れます。
並べ替えの後に、昇順と降順をどのように制御するかという別の質問があります。
comparFunction のソート規則は次のとおりです:
1.負の数値が返された場合、 a は配列内の低いインデックスにソートされます。
2.正の数値が返された場合、a はより高いインデックスにソートされます。
3.0 が返された場合、並べ替えは必要ありません。
Mozilla MDN からの抜粋を見てみましょう:
sort メソッドの動作は、JavaScript 1.1 と JavaScript 1.2 の間で変更されました。この説明を説明するために、例を見てみましょう:
JavaScript 1.1 では、一部のプラットフォームでは、このメソッドは JavaScript 1.2 のすべてのプラットフォームで機能しません。
JavaScript 1.2 では、このメソッドは未定義の要素を null に変換しなくなり、代わりに配列の上位に並べ替えられます。詳細については、ここをクリックしてください。
この記事が sort() メソッドの学習と理解に役立つことを願っています。記事内の不適切な点を批判して修正していただければ幸いです。
参考リンク: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort