Javascriptでアルファベット配列をスマートに定義する
プログラミングコンテスト(プロコン)やオンラインのプログラミング学習サイトなどの問題を解く時、アルファベット配列が必要になる場合がある(気がする)。
JavascriptにはRubyやPythonなどのように範囲指定子がないので自力で定義してやる必要があるが、どうせならできるだけスマートに実装したいところである。
方法1
const a = ['a', 'b', ..., 'y', 'z'];
最も素朴な方法。まぁスマートではない。
方法2
const c = 'a'.charCodeAt(0); const alphabets = Array.apply(null, new Array(26)).map((v, i) => { return String.fromCharCode(c + i); });
Programmaticallyにアルファベット配列を生成してみる。ここでのポイントはArray.apply
で配列を生成していることである。こうすることでundefined
で初期化された配列が生成され、その後のmap
処理が適切に実行される。単にnew Array(26).map
とすると空の配列が生成されるためmap
が実行されないという問題が発生する。
方法3(おまけ)
function makeAlphabetsBetween(start, end) { const s = start.charCodeAt(0); const e = end.charCodeAt(0); const num = (e - s) + 1; return Array.apply(null, new Array(num)).map((v, i) => { return String.fromCharCode(s + i); }); } const a = makeAlphabetsBetween('g', 'n'); console.log(a); // ['g', 'h', 'i', 'j', 'k', 'l', 'm', 'n']
任意の開始文字と終了文字を指定してその間に出現する文字の配列を生成するサンプル。エラーケースは考慮してないので必要に応じて各自で実装してください。
参考
javascript - Create an array of characters from specified range - Stack Overflow
javascript - How to generate an array of alphabet in jQuery? - Stack Overflow