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

JavaScriptで数字文字列を対応するアルファベットに変換する方法

本記事では、任意の長さの数字文字列を受け取り、それに対応する英字文字列へ変換するJavaScript関数の作成方法を解説します。

要件の確認

まず、具体的な例を見てみましょう。入力が次の数字文字列だった場合:

const str = '78956';

出力は以下のようになります。

const output = 'ghief';

また、入力が次の場合:

const str = '12345';

出力は次の通りです。

const output = 'lcde';

ここで注目したいのは、「1」と「2」をそれぞれ別々に「a」「b」へ変換せず、「12」をまとめて「l」(アルファベット12番目)として扱っている点です。つまり、隣接する2桁の数字が1〜26の範囲に収まる場合は、1つのアルファベットとしてマッピングする必要があります。関数を実装する際には、このケースを必ず考慮しなければなりません。

なお、ここでは数字文字列に「0」が含まれないものと仮定します。仮に含まれていた場合でも、「0」はそのまま自身へマッピングされる仕様とします。

実装例

それでは、実際のコードを見ていきましょう。

const str = '12345';
const str2 = '78956';
const convertToAlpha = numStr => {
    const legend = '0abcdefghijklmnopqrstuvwxyz';
    let alpha = '';
    for(let i = 0; i < numStr.length; i++){
        const el = numStr[i], next = numStr[i + 1];
        if(+(el + next) <= 26){
            alpha += legend[+(el + next)];
            i++;
        }
        else{
            alpha += legend[+el];
        };
    };
    return alpha;
};
console.log(convertToAlpha(str));
console.log(convertToAlpha(str2));

コードのポイント

  • legend文字列: 先頭にダミーの「0」を配置したアルファベット参照表です。これにより、数値をそのまま配列のインデックスとして使い、対応する文字を取得できます。
  • 2桁判定: 現在の文字と次の文字を連結して数値化し、その値が26以下であれば2桁として1文字へ変換し、ループカウンタiを1つ余分に進めます。
  • 1桁処理: 2桁の値が26を超える場合は、現在の1桁のみを変換します。

出力結果

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

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

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

  2. JavaScriptで数字パターンを表示する方法【初心者向けサンプルコード】

    本記事では、テキスト入力欄とボタンを備えたJavaScript・HTMLプログラムの作成方法を解説します。ユーザーが入力欄に任意の数値(例:5)を入力してボタンをクリックすると、画面に以下のような数字パターンが表示される仕組みです。(n = 5 の場合の出力例)01 01 02 01 02 03 01 02 03 04 01 02 03 04 05仕組みのポイントこのパターンは二重ループ(ネストしたforループ)を使うことで実現できます。外側のループが「行」を制御し、内側のループがその行に表示する「数字の個数」を制御します。i 行目には 1 から i までの数字が順番に出力されるため、行が進む