JavaScriptの洗練されたソート

Jennifer Aniston
リリース: 2025-03-08 00:40:09
オリジナル
730 人が閲覧しました

Sophisticated Sorting in JavaScript

JavaScriptのソートメカニズムはシンプルで使いやすいですが、強力で柔軟な機能が含まれています。 sort()メソッドは、配列をアルファベット順または数値的に並べ替えるだけでなく、カスタム条件付きロジックに従って任意にソートすることもできます。

コアポイント:

  • javascriptのsort()関数は、条件付きロジックに基づいて定義されたカスタム順列を含む、さまざまな方法でアレイを整理する柔軟なツールです。
  • sort()関数は、各操作で2つの値(aとb)を比較することで機能します。関数がゼロ未満に戻る場合、aはゼロよりも大きい場合、bはaとbが変化します。
  • JavaScriptは、多次元ソートとマルチコンディションソートをサポートしています。多次元ソートでは、アレイの内部値をマルチコンディショニングソートで比較します。
  • javaScriptはオブジェクト配列をソートすることもできます。比較がより複雑になると、比較関数が理解しやすくなるため、多次元配列の代わりにオブジェクトリテラルアレイを使用することをお勧めします。

sort()関数の仕組み:

→基本を既に知っている場合は、このセクションをスキップできます。

sort()メソッドがパラメーターを取得しない場合、配列は辞書順序でソートされます(辞書順序、各値は文字列として扱われます):

var letters = ["R","O","F","L"];

letters.sort();

alert(letters);    // 输出 ["F","L","O","R"]
ログイン後にコピー
ログイン後にコピー
それ以外の場合、

メソッドのパラメーターは、戻り値に基づいてソート動作を定義する比較関数です。比較関数自体は、一般にAとBと呼ばれる2つのパラメーターを受け入れます。これは、各操作で比較される2つの値を表します。次に:sort()

    関数がゼロ未満である
  1. の場合、aはb の前にあります 関数がゼロ
  2. よりも大きい場合、bはa
  3. の前に戻ります。 関数がゼロを返す場合、aとbの相対位置は変わらない
  4. 仕様は、これらのルールを紛らわしい方法で定義します。 JavaScriptの仕様は、最初のソート条件「bを並べ替える」をaより低いインデックスに呼び出します」。しかし、これは実際には「ランクBがAのランクB低い」を意味します。これは、数値インデックスの点では低くないインデックスです。 「インデックス」という言葉を非常に混乱させる方法で使用します。
  5. したがって、比較関数を使用する通常の方法は、単純な計算を実行および返すために、目的のソートされた結果を生成することです。たとえば、関数が戻っている場合(a -b)、数値の種類が生成されます:

値の例:a = 8とb = 5であるため、(a -b)== 3はゼロよりも大きくなり、順になります[5,8]。 したがって、方程式を反転させることにより、逆数値順序を生成できます。

var letters = ["R","O","F","L"];

letters.sort();

alert(letters);    // 输出 ["F","L","O","R"]
ログイン後にコピー
ログイン後にコピー
また、3つの比較を定義して文字列の各ペアを評価することにより、辞書ソートを生成する比較関数を作成することもできます。計算用語では、「a」は「b」より少ないため、文字列を直接比較してから、3つのソートされた値のいずれかを返すことができます。

各文字列を事前に小文字に変換する方法に注意してください。これにより、ケースに依存しない種類が得られます(そうでない場合、上限と小文字は個別にソートされます)。また、一部のブラウザではオーバーライドパラメーターが許可されていないため、これらの操作の結果を新しい変数に割り当てます。
var numbers = [8,5];

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

alert(numbers);    // 输出 [5,8]
ログイン後にコピー

(以下のコンテンツは元のテキストと同じです。元のテキストとの一貫性を維持するために、ここでは重複部分が省略されています)

多次元ソート マルチコンディションソート オブジェクト配列の順序付け 安定した並べ替えの指示

要約:比較関数のソートについて特別なものは何もないことを忘れないでください。操作を実行して結果を返すのは通常の関数です。外部データをロードしたり、テストレンダリング要素を作成したり、複雑な操作を実行したりできます。関数が正しく戻る限り - ゼロ未満、ゼロまたはゼロより大きい - 実装プロセスに特定の制限はありません!

サムネイル画像のソース:[soren]

高度なJavaScriptのソートに関する FAQ(元のFAQパーツは省略されています、重複を避けてください)

以上がJavaScriptの洗練されたソートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート