[JS問題] js問題応用
- Data
- 2019/12/21
- Tag
【Q1 - 1】ブラウザを更新するたび、['大吉', '中吉', '小吉', '吉', '末吉', '凶', '大凶' ]のいずれかをランダムでconsole.logで表示する
考え方
- 大吉から大凶まで入った配列を定義する
- 「配列の長さ」分の「ランダムな数値」を取得する処理を書く(0 〜「配列の長さ」の整数)
- 配列から「ランダムで取ってきた数値の位置の配列」をとってきてconsole.logで表示する
使用するJavascript
使用例
Math.random(); // 0 ~ 1までのランダムな値が返ってくる
Math.floor(1.15); // 1が返ってくる、小数点を切り捨てる
([1,2,3]).length; // 3が返ってくる、配列の長さを取る
【Q1 - 2】「[Q1 - 1]のおみくじの処理」を関数にする
下記を実行することで、['大吉', '中吉', '小吉', '吉', '末吉', '凶', '大凶' ]のいずれかを返す関数を作りましょう。
下記の様に実行するとおみくじの結果を返してくれる関数を作る
console.log(omikuzi())
Q### 1のスクリプト以外に使用するJavascript
function omikuzi(){
return '返したい値'
}
【Q2】配列を渡すと、配列内の数字を足した値が返ってくる
console.log(calcTheNumbersInArray([1, 2, 3, 4, 5, 6, 10])) //31と表示される
console.log(calcTheNumbersInArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])) //55と表示される
考え方
- calcTheNumbersInArray関数を作る
- for文で「引数で受け取った配列長さ」だけ回す処理を作る
- そのfor文を使って配列の中から一つづつとり出して、毎回それを足す処理を作る。
毎回足す処理を作るためには
- 予め数値の0を入れた変数を定義しておく
- その変数に毎回足した数値を代入し直すイメージ
使用するJavascript
使用例
// for文で10回処理
for(let i = 0;i < 10;i++) {
console.log(i)
}
([1,2,3]).length; // 3が返ってくる、配列の長さを取る
ヒント
for文を使わずにやってみる。
// 毎回たすためには
const ary = [1, 2, 3] // 配列がはいった変数がある
let addNumber = 0
addNumber = addNumber + ary[0] // 0 + 1
addNumber = addNumber + ary[1] // 1 + 2
addNumber = addNumber + ary[2] // 3 + 3
console.log(addNumber) // 6
- ↑の処理をfor文に直すことを考える
- 直してコンソールですべての値が返す処理ができあがったら
- functionにするにはどうすればよいかを考える
【Q3】ユーザーの「合格・失格」を表示する
下記のような配列があります。
平均点を計算して、その点数に応じて「合格・失格」を表示しましょう。
const users = [
{
name: '佐藤',
score: 90
},
{
name: '山田',
score: 40
},
{
name: '斎藤',
score: 70
},
{
name: '高橋',
score: 30
},
{
name: '田中',
score: 80
}
]
考え方
平均点を計算する(全員の点数の合計 / 人数(配列の長さ))
const average = 全員の点数の合計 / 配列の長さ
【ポイント】全員の点数の合計をどうやって出すか
usersの回数分、繰り返し処理(forEach文)を行う
users.forEach(function(val) {
console.log(val)
})
↑を使い、繰り返し処理の中で、下記の処理を行いconsole.logで下記のように表示しましょう。
- もしも平均点を超えている場合は
- 例)「佐藤は90で合格です。」
- もしも平均点を下回っている場合は
- 例)「山田は40で失格です。」