1 件の投稿を表示中 (合計 4 個)
  • 作成者
    投稿
  • #11452
    redakt55
    参加者

    並べ替え機能はとても便利です。
    オプションもいくつかあって,何を基準に並べ替えるかがある程度選べます。
    しかし,現実にはもっと柔軟に指定したいものです。

    たとえば,CSV において 4 カラム目の値で並べ替えることは現在でもできますが,4 カラム目が同値のときは 2 カラム目で判定する,といったことはできないと思います。

    これを実現するには,引数に行を与えて行の〈値〉を計算する「評価関数」が自由に定義できればいいことになります。
    評価関数の値を元にふつうにソートを行います。
    スクリプトからだけでもこういうことができるといいのですが。

    ※Ruby の Enumerable#sort_by メソッドのようなソート方法です。
    JavaScript でも Array.sort は引数に比較関数が取れますが,これはイマイチです。同じ要素について何度も比較関数が呼ばれるので,無駄な重複計算が発生します。

    #11456
    Yutaka Emura
    キーマスター

    redakt55 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    現バージョンの場合、安定ソートになっているため、4 カラム目でソートを行った後、2 カラム目でソートを行えば、ご希望の動作になるかと思います。お試しいただけると幸いです。

    ご希望のように、これらのオプションをあらかじめ指定できれば、さらに便利になるかと思います。これについては検討させてください。

    どうぞよろしくお願い申し上げます。

    #11458
    redakt55
    参加者

    現バージョンの場合、安定ソートになっているため、4 カラム目でソートを行った後、2 カラム目でソートを行えば、ご希望の動作になるかと思います。

    うっ,確かに。これは気づきませんでした。

    ただ,要望は「複数カラムで CSV のソートができるように」ということではなく,ソーティングの基準になる評価値が自由に(スクリプトで)定義できる汎用の仕組みです。
    たとえば,単語と読みからなるデータを,百科事典的に
    ・読みの音引き「ー」を削除して
    ・小書きの仮名を並字にして
    ・濁音を清音化して
    ソートするなど,ソートの方法は多種多様ということですね。

    #11461
    Yutaka Emura
    キーマスター

    redakt55 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    わかりました。これは複雑になりそうですが、検討してみます。

    どうぞよろしくお願い申し上げます。

1 件の投稿を表示中 (合計 4 個)
  • このトピックに返信するにはログインしてください。