JavaScriptで文字列がパングラムかどうかを判定する方法
パングラムとは
パングラム(pangram)とは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文字列のことです。有名な例として「The quick brown fox jumps over the lazy dog」が挙げられます。
本記事では、文字列を第1引数として受け取り、その文字列がパングラムであるかどうかを判定するJavaScript関数を作成します。なお、この問題では小文字のアルファベットのみを考慮します。
実装例
実際のコードは以下のとおりです。
const str = 'We promptly judged antique ivory buckles for the next prize';
const isPangram = (str = '') => {
str = str.toLowerCase();
const { length } = str;
const alphabets = 'abcdefghijklmnopqrstuvwxyz';
const alphaArr = alphabets.split('');
for(let i = 0; i < length; i++){
const el = str[i];
const index = alphaArr.indexOf(el);
if(index !== -1){
alphaArr.splice(index, 1);
};
};
return !alphaArr.length;
};
console.log(isPangram(str));
コードの解説
この関数は以下の手順で動作します。
- 小文字への変換: まず
toLowerCase()メソッドを使い、入力文字列をすべて小文字に変換します。これにより大文字・小文字の違いを気にせず判定できます。 - アルファベット配列の作成: 「a」から「z」までの26文字を1文字ずつ格納した配列
alphaArrを準備します。 - 文字の照合と削除: 文字列内の各文字について、配列内に存在する場合は
splice()メソッドで該当要素を削除します。同じ文字が複数回現れても、2回目以降は配列に存在しないため無視されます。 - 判定: ループ終了後に配列が空になっていれば、すべてのアルファベットが文字列に含まれていたことになります。したがって
!alphaArr.lengthの結果(true)を返します。
出力結果
コンソールには次のように表示されます。
true
この例で使用した文字列「We promptly judged antique ivory buckles for the next prize」は、26文字すべてのアルファベットを含んでいるため、パングラムとして正しく判定されています。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時