JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列を逆アルファベット順にソートする方法

問題の概要

JavaScriptで、小文字の英字からなる文字列 str を引数として受け取る関数を作成します。

この関数の目的は、入力された文字列をもとに、英字を逆順(ZからA)で並べ替えた新しい文字列を生成して返すことです。

例えば、次のような入力があったとします。

const str = 'abcdef';

この場合、期待される出力は以下のとおりです。

const output = 'fedcba';

実装方法

この問題は、次の手順で解決できます。

1. 文字列を split('') メソッドで1文字ずつ配列に分解する
2. カスタム比較関数を使って配列を降順にソートする
3. join('') メソッドで配列を再び文字列に結合する

ポイントは、sort() メソッドに渡す比較関数です。基準となるアルファベット文字列(マップ文字列)を用意し、indexOf() で各文字の位置を取得することで、任意の順序でのソートが可能になります。今回は逆順にしたいので、b の位置から a の位置を引いた値を返します。

サンプルコード

以下が実際のコードです。

const str = 'abcdef';

const reverseSorting = (str = '') => {
    // 文字列を1文字ずつの配列に変換
    const strArr = str.split('');

    // ソート基準となるマップ文字列
    const mapString = 'abcdefghijklmnopqrstuvwxyz';

    // 逆順で比較するカスタム比較関数
    const sorter = (a, b) => {
        return mapString.indexOf(b) - mapString.indexOf(a);
    };

    strArr.sort(sorter);

    // 配列を文字列に戻して返す
    return strArr.join('');
};

console.log(reverseSorting(str));

なお、単純に通常のアルファベット順を逆にするだけであれば、マップ文字列を使わずに b.localeCompare(a)b.charCodeAt(0) - a.charCodeAt(0) を使う方法も有効です。マップ文字列方式は、独自の並び順(例えば辞書の頻出順など)でソートしたい場合に特に役立ちます。

実行結果

コンソールには次のように出力されます。

fedcba

このように、split → sort → join の流れとカスタム比較関数を組み合わせることで、柔軟かつ簡潔に文字列の並べ替えを実現できます。

  1. JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方

    JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時

  2. JavaScriptのArray.prototype.sort()メソッドの使い方をサンプルコードで解説

    Array.prototype.sort()は、JavaScriptで配列の要素を並べ替えるための組み込みメソッドです。アルファベット順・数値順といった並び方に加えて、昇順・降順も自由に指定でき、配列操作の中でも特に使用頻度の高いメソッドの一つです。 ただし重要なポイントとして、sort()メソッドはデフォルトではすべての要素を文字列に変換してから比較します。そのため、数値の配列を意図したとおりに並べ替えたい場合は、比較関数を引数として渡す必要があります。 以下は、Array.prototype.sort()メソッドの基本的な使い方を示すサンプルコードです。 サンプルコード <!DOC