解説
「比較関数」(compare function)は、ソート関数に渡して使う、各要素の並び順を判定させるための関数のことです。
多くの場合、比較関数では、第一引数と第二引数から値を取ります。そして、マイナスの値を返すと第一引数の要素を前に、プラスの値を返すと第二引数の要素を後ろに移動します。0の場合の処理は、プログラミング言語や実装によります。
比較関数を使うことで、数値や文字列といったプリミティブな値だけでなく、配列やオブジェクトといった要素を比較して並べ換えることができます。
サンプル
「比較関数」のサンプルです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>「比較関数」のサンプル</title> <style> #output { font-size: 32px; line-height: 1.5; } </style> </head> <body> <pre id="output"></pre> <script> window.addEventListener('DOMContentLoaded', e => { // 出力用の関数 const print = function() { const el = document.querySelector('#output'); el.textContent += Array.from(arguments).join(':') + '\n'; }; const array = [ {name: '山田', score: 76}, {name: '鈴木', score: 99}, {name: '佐藤', score: 65}, {name: '本田', score: 80}, {name: '川口', score: 82} ]; print('オブジェクトをソート'); array.sort(function(a, b) { return b.score - a.score; }); array.forEach(x => print(JSON.stringify(x))); }); </script> </body> </html>
オブジェクトをソート {"name":"鈴木","score":99} {"name":"川口","score":82} {"name":"本田","score":80} {"name":"山田","score":76} {"name":"佐藤","score":65}