並べ替え機能はとても便利です。
オプションもいくつかあって,何を基準に並べ替えるかがある程度選べます。
しかし,現実にはもっと柔軟に指定したいものです。
たとえば,CSV において 4 カラム目の値で並べ替えることは現在でもできますが,4 カラム目が同値のときは 2 カラム目で判定する,といったことはできないと思います。
これを実現するには,引数に行を与えて行の〈値〉を計算する「評価関数」が自由に定義できればいいことになります。
評価関数の値を元にふつうにソートを行います。
スクリプトからだけでもこういうことができるといいのですが。
※Ruby の Enumerable#sort_by メソッドのようなソート方法です。
JavaScript でも Array.sort は引数に比較関数が取れますが,これはイマイチです。同じ要素について何度も比較関数が呼ばれるので,無駄な重複計算が発生します。