JavaScriptでアルファベットの1始まりのインデックスを取得する方法
問題
JavaScriptで関数を作成する必要があります。この関数は、小文字の英字アルファベット1文字を受け取り、その文字がアルファベットの中で何番目に位置するかを「1始まり」のインデックスとして返します。
例えば、'a' なら 1、'j' なら 10 を返すといったイメージです。無効な入力が渡された場合は -1 を返してエラーを通知すると親切です。
実装の考え方
最もシンプルな方法は、先頭に半角スペースを付けたアルファベット文字列「' abcdefghijklmnopqrstuvwxyz'」を基準(レジェンド)として用意することです。こうすることで、スペースが0番目となり、'a' は1番目、'j' は10番目というように、indexOf の結果がそのまま1始まりのインデックスになります。
また、以下のようなバリデーションも行います。
- 引数が空でないこと
- 渡された文字がアルファベットに含まれていること
- 文字列の長さがちょうど1文字であること
いずれかの条件を満たさない場合は、-1 を返します。
コード例
以下がその実装コードです。
const char = 'j';
const findCharIndex = (char = '') => {
const legend = ' abcdefghijklmnopqrstuvwxyz';
if (!char || !legend.includes(char) || char.length !== 1) {
return -1;
}
return legend.indexOf(char);
};
console.log(findCharIndex(char));出力結果
10
'j' は a=1, b=2, c=3 ... と数えて10番目の文字なので、正しく 10 が出力されました。この手法を使えば、文字コードを意識せずに直感的にアルファベットの順番を求めることができます。
-
JavaScriptで配列要素をそのインデックスでべき乗した値に変換する方法
問題 数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、入力配列の各要素を、その要素の位置を示す0始まりのインデックスでべき乗し、新しい配列へと変換します。そして最終的に、この新しい配列を返します。 例えば、インデックス0にある要素は0乗(常に1)、インデックス3にある要素は3乗、というように各要素が処理されます。 実装のポイント ループで配列を走査しながら、各要素とそのインデックスを同時に取得する Math.pow() を使って「要素 ^ インデックス」を計算する 計算結果を結果配列の同じ位置に格納する なお、モダンなJavaScriptでは Math
-
【JavaScript】配列内で最も頻出する単語を上位N件抽出する方法
問題概要英小文字のみで構成された文字列の配列 arr を第一引数として受け取り、数値 num(num は配列の長さより小さい値)を第二引数として受け取る JavaScript 関数を作成します。この関数は、配列 arr 内で最も頻出する要素を上位 num 件返す必要があります。結果は出現回数が多い順に並べます。また、出現回数が同じ単語が複数ある場合は、辞書順(アルファベット順)で先に来る単語を優先して並べます。入力例const arr = [the, day, is, sunny, the, the, the, sunny, is, is]; const num = 4;出力例const ou