第17回 「汎用性を持たせる」
前回は以下のようなプログラムでランダムにメッセージを表示しましたが、メッセージを追加するたびに「追加したメッセージ」と「繰り返し回数(配列の個数)」部分を修正しなければなりませんでした。(下記プログラム)
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript"><!--
msg = new Array();
msg[0] = "こんにちは";
msg[1] = "いい天気";
msg[2] = "みたいですね";
msg[3] = "おしまい";
msg[4] = "やっぱり再開?";
n = Math.floor(Math.random() * 5);
document.write(msg[n],"<br>");
// --></script>
</body>
</html>
メッセージが追加された=配列要素が追加された事になります。変化するのは要素数で乱数を求める場合に変更していたのは配列の要素数です。つまり配列の要素数がわかれば良いことになります。配列の全要素数はlengthプロパティで求めることができます。
配列名.length
サンプルでは配列名はmsgなので
msg.lengthとすれば全配列要素数を求めることができます。これを乱数を生成する部分に指定すればメッセージを追加するだけで良くなり汎用性の高いプログラムになります。
実際のプログラムは以下のようになります。
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript"><!--
msg = new Array();
msg[0] = "こんにちは";
msg[1] = "いい天気";
msg[2] = "みたいですね";
msg[3] = "おしまい";
msg[4] = "やっぱり再開?";
n = Math.floor(Math.random() * msg.length);
document.write(msg[n],"<br>");
// --></script>
</body>
</html>
これで
msg[参照番号] = "文字列"
をどんどん追加していけば良いだけで楽になります。しかし、コピー&ペーストしてmsg[〜]を追加しても「参照番号」の部分だけは修正しなければいけません。参照番号を間違えてしまうと期待通りにメッセージが表示されなくなります。こういう間違えやすい部分は、なるべくなくしていく方がプログラムや入力ミスを予防する事になります。
次回は配列の参照番号を書かなくても、文字列を追加していくだけで動くように改良します。