質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1546閲覧

JavaScriptのrandom

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/08/17 01:36

下記のコードは
選択しの数を入力し、その数だけ選択しを入力してその選択肢をランダムに出力するというプログラムです。
promptを選択しの数だけ繰り返し出力することはできたのですが書き込まれた選択肢を配列に入れる方法がわかりません
どうすればいいのでしょうか?

JavaScript

1<!doctype html> 2<html> 3<head> 4 <meta charset="utf-8"> 5</head> 6 7<body> 8 <script> 9 var selects = prompt("選択しの数を入力"); 10 var num = parseInt(selects); 11 for (var i = 0; i < num; i++){ 12 var menu[i] = prompt("選択肢を入力"); 13 } 14 15 //上記の選択をランダムで出力 16 17 </script> 18 19</body> 20 21</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

random() のコードまで含めるとこんなところでしょうか。

JavaScript

1var menu = [], 2 length = Number(prompt('選択肢の数を入力')); 3 4for (var i = 0; i < length; i++){ 5 menu[i] = prompt('選択肢を入力'); 6} 7 8console.log(menu[Math.floor(Math.random() * length)]);

Array#push を利用すれば i も省略できます。

投稿2015/08/17 03:04

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/08/18 00:01

回答ありがとうございます また質問で申し訳ございません Numbarとはどういったものなのでしょうか? 打ち込まれた文字を数字化するということですか?
think49

2015/08/18 00:24

Number() は Number 型への型変換を行う関数です。 単純な型変換ならば、parseInt(), parseFloat() よりも Number() を使うことをお勧めします。 蛇足ですが、parseFloat() はもっと知名度が上がっても良いと思います("**px" の数値変換に parseInt() を使っている人を良く見かけますが、勿体無い!)。 http://oshiete.goo.ne.jp/qa/5933575.html#an16988790
退会済みユーザー

退会済みユーザー

2015/08/18 07:47

ありがとうございます 無事解決できました!
guest

0

質問の表題と内容が一致しないように感じましたが・・・「配列に入れる方法がわかりません 」についての回答でよいですよね?

配列数が
var selects = prompt("選択肢の数を入力");
によって決まるので、動的配列になります

例えばこんな感じに書けます

javascript

1 var menuAry = new Array(); 2 var selects = prompt("選択肢の数を入力",""); 3 var num = parseInt(selects); 4 for (var i = 0; i < num; i++){ 5 menuAry.push( prompt("選択肢を入力","") ); 6 }

prompt 関数の第2引数で ""(空文字列)の初期値を与えた方がよいでしょうね
入力された文字が数値に変換できる文字とはかぎらないので、最終的にはそのあたりの手当(例外処理)も組み込まれた方がよいと思います

投稿2015/08/17 01:57

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2015/08/17 03:08

> prompt 関数の第2引数で ""(空文字列)の初期値を与えた方がよいでしょうね prompt() でキャンセルされた場合の返り値は null ですが、parseInt('') は NaN であり、parseInt(null) も NaN なので何も変わっていないのではないでしょうか。 第二引数を '0' にするとか Number() を使えば 0 にキャストされます。 ただし、NaN になった場合は選択肢が作られない(forループしない)のでそれでよしとする考え方もあると思います。 設計方針の違いですね。
takito

2015/08/17 03:27

think49 さん、コメントありがとうございました。ご指摘内容はごもっともと思いました。 質問者様が「どのような入力を期待して、どう処理したいか」までは見通せなかったので、書かれているコードをあまりいじらずに・・・と思いつつ、意図しない初期値が入力欄に出現するのはよくないと思い追記した次第でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問