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) のように簡潔に書くこともできます。状況に応じて使い分けると、より読みやすいコードになります。
-
JavaScriptでオブジェクトを値の昇順に並べ替える方法をわかりやすく解説
問題の概要次のようなオブジェクトがあるとします。const obj = { sub1: 56, sub2: 67, sub3: 98, sub4: 54, sub5: 87};ここで求められているのは、このようなオブジェクトを引数として受け取るJavaScript関数を作成することです。作成する関数は、オブジェクト内の各キーに対応する値(バリュー)の昇順に基づいてオブ
-
【MySQL】FIELD()関数を使ってフィールド値によるカスタムソートを実現する方法
MySQLでカスタムソートを行うには?MySQLでフィールド(列)の値に基づいた独自の並び順(カスタムソート)を実現したい場合は、ORDER BY句とFIELD()関数を組み合わせて使用します。FIELD()関数は、指定した値がリスト内のどの位置にあるかを返すため、その結果をもとにソート順を自由に制御できます。ここでは、実際のサンプルを通じて具体的な手順を見ていきましょう。1. サンプルテーブルを作成するまず、テスト用のテーブルを作成します。以下のクエリを実行してください。mysql> create table DemoTable (StudentId int); Query OK, 0