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

JavaScriptでライブラリ関数を使わずにASCIIコードからアルファベットを取得する方法


問題

数値を引数として受け取るJavaScript関数を作成する必要があります。この関数は、その数値に対応するASCIIコード上のアルファベット文字を返し、該当するアルファベットが存在しない場合は -1 を返します。

ここでの重要な条件は、String.fromCharCode() のように数値と文字を相互変換する組み込み関数を使用してはならないという点です。

解決のアプローチ

ASCIIコードでは、小文字の「a」〜「z」には 97〜122、大文字の「A」〜「Z」には 65〜90 の番号が連続して割り当てられています。この規則性を利用すれば、与えられた数値がどちらの範囲内にあるかを判定するだけで、対応する文字を簡単に特定できます。

具体的には、アルファベット26文字を並べた文字列をあらかじめ用意しておき、入力された数値から基準値(97または65)を差し引いた値をインデックスとして使うことで、目的の文字を取り出します。

コード例

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

const num = 98;
const findChar = (num = 1) => {
   const alpha = 'abcdefghijklmnopqrstuvwxyz';
   if(num >= 97 && num <= 122){
      return alpha[num - 97];
   };
   if(num >= 65 && num <= 90){
      return alpha.toUpperCase()[num - 65];
   };
   return -1;
};
console.log(findChar(num));

コードの解説

ステップ1: 小文字のアルファベット全26文字を格納した文字列 alpha を定義します。

ステップ2: 入力された数値が 97 以上 122 以下の場合、それは小文字の範囲です。num - 97 を計算すると、97(a)なら0、98(b)なら1となるため、これをインデックスとして文字列から該当する文字を取得して返します。

ステップ3: 数値が 65 以上 90 以下の場合は大文字の範囲です。alpha.toUpperCase() で大文字版の文字列を生成し、同様に num - 65 をインデックスとして文字を取得します。なお、toUpperCase() は文字列自体を操作するメソッドであり、数値から文字への変換関数ではないため、今回の条件には抵触しません。

ステップ4: どちらの範囲にも該当しない数値の場合、対応するアルファベットは存在しないため、-1 を返します。

出力結果

入力が 98 の場合、ASCIIコード98は小文字の「b」に相当するため、以下の結果が出力されます。

b
  1. JavaScriptで2次元配列の各行の最小値の合計を求める方法

    問題 数値を要素とする2次元配列を受け取るJavaScript関数を作成します。この関数は、配列の各行から最小値を1つずつ取り出し、最終的にそれらの合計を返す必要があります。 アプローチ 実装の手順は非常にシンプルです。 各行(部分配列)ごとに最小値を求める 求めた最小値を順番に加算していく 合計値を返す 行内の最小値の計算には、reduce() メソッドと Math.min() を組み合わせるのが便利です。 コード例 以下は実際のコードです。 const arr = [ [2, 5, 1, 6], [6, 8, 5, 8], [3, 6, 7, 5],

  2. JavaScriptで昇順配列の中から並び順を壊している唯一の要素を見つける方法

    この記事では、昇順(増加順)にソートされた数値の配列の中に、ただひとつだけ並び順を乱している要素がある場合に、その要素を特定して返すJavaScript関数の実装方法を解説します。 問題の定義 扱う配列は基本的に昇順でソートされていますが、その中の要素がひとつだけ順序から外れています。関数の目的は、その「異常な要素」を見つけ出して返すことです。 たとえば、次のような配列を考えます。 const arr = [1, 2, 3, 4, 17, 5, 6, 7, 8]; この配列から「17」を取り除けば残りは完全な昇順になるため、求める答えは「17」です。 解決のアプローチ 昇順の配列では、隣り合う