JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでカスタムソート関数を定義する方法をわかりやすく解説

JavaScriptのsort()メソッドでは、比較用のコールバック関数(カスタムソート関数)を渡すことで、独自の並び替えルールを実現できます。

カスタムソート関数の基本ルール

カスタムソート関数を定義するには、配列内の1番目の値2番目の値を比較します。戻り値によって並び順が決まります。

  • 1番目の値が2番目の値より大きい場合 → -1 を返す
  • 1番目の値が2番目の値より小さい場合 → 1 を返す
  • どちらでもない場合(等しい場合)→ 0 を返す

このルールに従うと、データは降順(大きい順)にソートされます。もし昇順(小さい順)で並べたい場合は、上記の処理を逆向きにして、大きい場合に 1 を、小さい場合に -1 を返すようにします。

サンプルコード

以下は、文字列の配列を降順にソートするコード例です。

var name = ['David', 'Adam', 'John', 'Bob'];
name.sort(function (first, second) {
    if (first > second) {
        return -1;
    }
    if (first < second) {
        return 1;
    }
    return 0;
});
console.log(name)

プログラムの実行方法

上記のプログラムを実行するには、Node.jsを使って次のコマンドを入力します。

node fileName.js

ここでは、ファイル名を demo263.js として保存しています。

実行結果

プログラムを実行すると、コンソールに以下のような出力が表示されます。

PS C:\Users\Amit\javascript-code> node demo263.js
[ 'John', 'David', 'Bob', 'Adam' ]

補足:昇順にソートしたい場合

昇順で並べたい場合は、戻り値の符号を逆にするだけです。

var name = ['David', 'Adam', 'John', 'Bob'];
name.sort(function (first, second) {
    if (first > second) {
        return 1;
    }
    if (first < second) {
        return -1;
    }
    return 0;
});
console.log(name); // [ 'Adam', 'Bob', 'David', 'John' ]

なお、単純な文字列や数値の比較であれば、アロー関数を使って arr.sort((a, b) => b - a) のように簡潔に書くこともできます。状況に応じて使い分けると、より読みやすいコードになります。

  1. JavaScriptでオブジェクトを値の昇順に並べ替える方法をわかりやすく解説

    問題の概要次のようなオブジェクトがあるとします。const obj = {    sub1: 56,    sub2: 67,    sub3: 98,    sub4: 54,    sub5: 87};ここで求められているのは、このようなオブジェクトを引数として受け取るJavaScript関数を作成することです。作成する関数は、オブジェクト内の各キーに対応する値(バリュー)の昇順に基づいてオブ

  2. 【MySQL】FIELD()関数を使ってフィールド値によるカスタムソートを実現する方法

    MySQLでカスタムソートを行うには?MySQLでフィールド(列)の値に基づいた独自の並び順(カスタムソート)を実現したい場合は、ORDER BY句とFIELD()関数を組み合わせて使用します。FIELD()関数は、指定した値がリスト内のどの位置にあるかを返すため、その結果をもとにソート順を自由に制御できます。ここでは、実際のサンプルを通じて具体的な手順を見ていきましょう。1. サンプルテーブルを作成するまず、テスト用のテーブルを作成します。以下のクエリを実行してください。mysql> create table DemoTable (StudentId int); Query OK, 0