行の並べ替え

リストをアルファベット順、数値順、長さ順に並べ替えたり、ランダムにシャッフルしたりできます。昇順・降順、重複削除オプション付き。

重複行を削除
空行を削除

0 行。

仕組み

入力されたテキストは改行で分割され、ドロップダウンで選んだ比較関数で並べ替えられます。アルファベット順は生の文字コードではなく、ブラウザの言語対応比較機能である localeCompare を使用します。この違いはすぐにわかります。素朴なコードポイント順の並べ替えでは、すべての大文字がすべての小文字より前に来てしまい(そのため "Zebra" は "apple" より前に並びます)、アクセント記号付きの文字の順序も崩れてしまいます。ロケールを考慮した比較なら、辞書と同じように単語を並べられます。

数値順の並べ替えは各行を parseFloat で解析して数値を比較するため、"1" が小さい文字であるために "10" が "9" より前に来てしまうという文字列ソートの典型的なバグを解消します。数値で始まらない行は0として扱われ、まとめてグループ化されます。長さ順は文字数を比較し、シャッフルはFisher-Yatesアルゴリズムを使用するため、すべての並び順が等しい確率になります。ここは一言触れておく価値があります。よく使われる sort(() => Math.random() - 0.5) というテクニックは、ソートアルゴリズムが一貫した比較関数を前提としているため偏ったシャッフルになりますが、Fisher-Yatesは配列を1回だけ走査し、各要素を一様にランダムな前方のスロットと入れ替えます。

降順は昇順に並べ替えてから反転する処理で、重複削除は並べ替え後に Set を使って行われるため、完全に一致するものだけが削除されます。空行はそれより前の段階でフィルタリングできます。この一連の処理はすべて、そのタブ内の文字列に対する配列操作です。貼り付けや並べ替えを行ってもリクエストは一切発生しません(開発者ツールのネットワークパネルで確認できます)。そのため、名前やメールアドレス、キーのリストを並べ替える際にサーバーが関わることは一切ありません。