JavaScriptで文字列をアルファベットの逆順にソートする方法
はじめに
今回は、小文字のみで構成された文字列を受け取り、通常とは逆の順序、つまり「b」が「a」よりも先に、「c」が「b」よりも先に来るように並べ替えるJavaScript関数を作成します。
実行例
たとえば、入力文字列が次のようになっているとします。
const str = "hello";
この場合、期待される出力は以下の通りです。
const output = "ollhe";
コード例
const string = 'hello';
const sorter = (a, b) => {
const legend = [-1, 0, 1];
return legend[+(a < b)];
}
const reverseSort = str => {
const strArr = str.split("");
return strArr
.sort(sorter)
.join("");
};
console.log(reverseSort(string));コンソールには次のように出力されます。
ollhe
コードの解説
このコードの処理の流れは以下の3ステップです。
1. 文字列を配列に分割: split("")を使うことで、文字列を1文字ずつ要素に持つ配列に変換します。「hello」は["h", "e", "l", "l", "o"]になります。
2. カスタム比較関数で逆順ソート: 比較関数sorterでは、legendという配列[-1, 0, 1]を用意し、+(a < b)の結果をインデックスとして使っています。比較結果がtrueなら1、falseなら0に変換されるため、「a が b より大きい場合」に-1が返され、降順(逆順)の並べ替えが実現します。
3. 配列を再び文字列に結合: 最後にjoin("")で配列の要素をつなげて、目的の文字列を完成させます。
別のシンプルな書き方
より簡潔に書きたい場合は、標準のソート後にreverse()を組み合わせる方法もあります。
const reverseSort = str =>
str.split("").sort().reverse().join("");
console.log(reverseSort("hello")); // ollheこの方法でも同じ結果が得られますが、カスタム比較関数を使う方法は、大文字や特殊文字が混在する場合など、より細かい制御が必要な場面で応用できます。
まとめ
文字列をアルファベットの逆順にソートするには、split()で配列化し、比較関数またはreverse()で並べ替えてからjoin()で結合するのが基本的なアプローチです。用途に応じて使い分けることで、柔軟な文字列操作が可能になります。
-
【初心者向け】JavaScriptのreverse()メソッドで配列を逆順にする方法
JavaScriptのreverse()メソッドは、配列の要素を元の順序と逆順に入れ替えるための便利な関数です。このメソッドを呼び出すと、配列の最初の要素が最後に、最後の要素が最初に移動し、配列全体が反転されます。reverse()メソッドの基本reverse()は配列そのものを変更する「破壊的メソッド」である点に注意してください。つまり、元の配列の順序が直接書き換えられます。元の配列を保持したい場合は、あらかじめslice()やスプレッド構文([...arr])などでコピーを作成してからreverse()を使用するのがおすすめです。サンプルコード以下は、ボタンをクリックすると配列の要素が逆順
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時