この動画はメンバー限定動画です
全ての講座が
月額990円で学び放題
今度は、次のようなプログラムを作成してみましょう。
パラメータとして渡した文字の種類の中から、1文字をランダムで取り出すプログラム
数字の中からランダムな文字を返すのではなく、指定された文字の中からランダムで文字を取り出すプログラムを作成します。
ここで、例えば次のように関数を作れば、3つの文字をパラメータとして送ることができます。
function getRandomChar(char1: string, char2: string, char3: string): string {
しかし、3つでは足りないという場合にはパラメータを都度増やさなければなりませんし、逆にこの状態では常に3つの文字を指定しなければなりません。そこで便利なのが「可変長パラメータ」です。
これは、パラメータの数を定めずに指定された分だけ、すべて「配列」の形で渡すというパラメータの定義です。次のように定義しましょう。
// function03
function getRnadomChar(...chars: string[]): string {
パラメータ名の最初に「…」という記述が加わっています。ここで、パラメータ名は「chars」なのですが可変長パラメータであることを示す「…」が先頭に加わっているというわけです。また、型が配列を表す「string[]」になっています。
これで準備完了です。次のように呼び出すことができます。
getRnadomChar("1", "a", "A");
正しく受け取れているか、「console.table」で確認しましょう。
function getRnadomChar(...chars: string[]): void {
console.table(chars);
}
すべての値を配列で受け取ることができました。
![](https://tomosta.jp/wp-content/uploads/2024/05/image-101-1024x317.png)
1文字取りだそう
後は、このパラメータの中からランダムで1文字取り出して戻り値として返します。次のようにプログラムを作成しましょう。
function getRnadomChar(...chars: string[]): string {
const randomIndex = Math.floor(Math.random() * chars.length);
return chars[randomIndex];
}
「Math.random」を使って乱数を求め、配列の件数(chars.length)を掛けて小数を切り下げることで、例えばここでは0から2の値を求めます。(配列のインデックスは0から始まるため)
そして、「return」で配列の中から求められたインデックスにある文字を返すというわけです。次のように呼び出してみましょう。
console.log(getRnadomChar("1", "a", "A"));
呼び出す度に、いずれかの1文字が表示されました。
![](https://tomosta.jp/wp-content/uploads/2024/05/image-103-1024x210.png)
パラメータの組み合わせ
可変長パラメータは通常のパラメータと組み合わせることもできます。
function example(param1: number, ...params: number[])
この場合、1つめに指定したパラメータは「param1」に渡され、2つめ以降のパラメータが可変長パラメータになります。
ただし、可変長パラメータは必ず最後に設定する必要があります。また、可変長パラメータを2つ以上組み合わせることもできませんので注意しましょう。
function bad_example(...params: number[], param1: number, ...params2: number[]) {