【JavaScript】数値をアルファベットに変換する方法を解説
本記事では、1から26までの整数を受け取り、それに対応する英大文字のアルファベットを返す関数をJavaScriptで実装する方法を解説します。範囲外の数値が渡された場合は -1 を返す仕様とします。
たとえば、次のような動作を目指します。
toAlpha(3) = C toAlpha(18) = R
ASCIIコードとは
ASCIIコードとは、キーボード上に存在する文字や記号、数字などを数値として表現するための標準的な規格です。コンピュータ内部では、すべての文字がこのような数値(文字コード)として扱われています。
英大文字のA〜ZもASCIIコード上で対応する数値が割り当てられており、Aは65、Bは66というように、Zの90まで連続して配置されています。つまり、「1〜26の数値」を「A〜Z」に変換したい場合、このASCIIコードの対応関係を利用すれば簡単に実装できます。
実装コード
JavaScriptでは String.fromCharCode() メソッドを使うことで、文字コードから該当する文字を取得できます。具体的な実装例は以下の通りです。
コード例
const toAlpha = (num) => {
// 数値が1〜26の範囲外、または数値型以外の場合は -1 を返す
if(num < 1 || num > 26 || typeof num !== 'number'){
return -1;
}
const leveller = 64;
// A の文字コードは 65 だが、引数は 1 始まりのため 64 をオフセットとして加算
return String.fromCharCode(num + leveller);
};
console.log(toAlpha(18));出力結果
コンソールには次のように出力されます。
R
コードのポイント解説
- 入力チェック: 引数が1未満・26超の場合、あるいは数値型以外の場合は不正な入力として
-1を返し、想定外の動作を防いでいます。 - オフセット値(leveller): アルファベット「A」のASCIIコードは65ですが、関数への入力は1始まりのため、
num + 64とすることで1が「A」、2が「B」と正しく対応します。 - String.fromCharCode(): 文字コード(UTF-16コードユニット)を受け取り、対応する文字列を返すメソッドです。今回のように単一文字への変換にも利用できます。
このように、ASCIIコードの仕組みを理解しておけば、数値と文字の相互変換はシンプルなコードで実現できます。逆にアルファベットから数値へ変換したい場合は、charCodeAt() を使うことで同様の処理が可能です。
-
【JavaScript】数値をアルファベット文字列に変換するencode/decode関数の実装方法
はじめに ログインシステムを構築する際、ユーザーを一意に識別するために固有のユーザーID(userID)を割り当てるのが一般的です。しかし、連番などの単純な数値IDは推測されやすいため、セキュリティ上の観点から何らかの形で難読化したいケースがあります。 そこで本記事では、数値とアルファベット文字列を相互に変換する、次の2つの関数を実装していきます。 encode() … 数値を26種類のアルファベットによる表記に変換する decode() … 変換された文字列を元の数値に復元する なお、実際のセキュリティ対策ではSHA-256のようなハッシュアルゴリズムが使われることが多いですが、これらは
-
【JavaScript】数値の約数をすべて求める関数の実装方法
はじめに本記事では、正の整数を1つ引数として受け取り、その数を余りなく割り切れるすべての数(約数)を配列として返すJavaScript関数の実装方法を解説します。問題の定義作成する関数は、正の整数を唯一の引数として受け取ります。そして、入力された数値を完全に割り切れるすべての数値を要素とする配列を構築して返す必要があります。例えばー入力が次の数値だった場合:const num = 12;期待される出力は以下のとおりです。const output = [1, 2, 3, 4, 6, 12];12の場合、1・2・3・4・6・12の6つの整数が12を割り切れるため、これらが約数となります。実装コード