BLOG
【JavaScript】簡単にランダムな英数字を生成する方法
【JavaScript】簡単にランダムな英数字を生成する方法
独自のIDの生成や仮パスワードの発行など、JavaScriptでプログラムを書いているとランダムな英数字を生成したいことはよくあります。
- とにかくシンプルなコードでランダム英数字を生成したい
- 英数字の重複ありでランダム英数字を生成したい
- 英数字の重複なしでランダム英数字を生成したい
この記事では、できる限りシンプルな方法で、任意の桁数のランダムな英数字を生成する方法について解説します。
ランダムな英数字を生成するコード
英数字の重複ありの場合
// 使用する英数字を変数charに指定
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
// 空文字列を用意
let randomStr = '';
// 用意した空文字列にランダムな英数字を格納(7桁)
for(let i = 0; i < 7; i++) {
randomStr += chars.charAt(Math.floor(Math.random() * chars.length));
}
使用している関数について、補足説明をします。
charAt関数は、引数に指定した数(index)の位置にある文字を返します。
よって、ランダムな英数字の生成に使用したい文字(=chars)に対しcharAt関数を適用し、引数にはcharsの文字列の長さに応じたランダムな数を渡します。
そして、選ばれた文字を文字列randomStrに追記します。
今回の例では、7桁のランダムな英数字を生成しているので、for関数で上記の作業を7回繰り返しています。
英数字の重複なしの場合
// 使用する英数字を変数charに指定
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
// 空文字列を用意
let randomStr = '';
// 用意した空文字列にランダムな英数字を格納(7桁)
for(let i = 0; i < 7; i++) {
while(true) {
// ランダムな英数字を一文字生成
const random = chars.charAt(Math.floor(Math.random() * chars.length));
// randomStrに生成されたランダムな英数字が含まれるかチェック
if(!randomStr.includes(random)) {
// 含まれないなら、randomStrにそれを追加してループを抜ける
randomStr += random;
break;
}
}
}
重複なしの場合は、ランダムに選ばれた英数字が既に選ばれた文字と重複していないかチェックする必要があります。
while関数を使って、重複しているならばランダムな英数字を抽出する作業を無限ループさせ、重複していないことが確認できたならば、breakを使ってループを抜けます。
重複しているかどうかの確認にはincludes関数を使用しています。指定した文字列に対しincludes関数を使用すると、その文字列に引数に指定した文字列が含まれているならばtrue、含まれていなければfalseを返します。
おわりに
生成する英数字に「小文字だけでなく大文字も含めたい」といった場合は、変数charsを編集して含めたい文字を指定してください。
参考までに、PHPで同様にランダムな英数字を生成する方法を解説した記事を貼っておきます。