ID非公開さん
2022/1/24 17:48
3回答
JavaScriptの変数について let score = 75; let output; if(score>=90) output='秀';
JavaScriptの変数について let score = 75; let output; if(score>=90) output='秀'; else if(score>=80)output='優'; else if(score>=70)output='良'; else if(score>=60)output='可' ; else output='不可'; document.write('成績'+score+'点の評価は'+output+'です'); といったような成績判定をつかって[87,65,93,71,83,96,78,55,70,69,45,62]までの成績を配列をつかって秀から不可の人数を求める場合、どのようにコードを書けばよろしいでしょうか。回答お願いします。
JavaScript | プログラミング・38閲覧・100
ベストアンサー
■■■ はじめに ■■■ document.write() という関数は、 HTML の DOM を破壊するうえに、 状況によって特殊な振る舞いをすることから、 公式に非推奨とされ「使うな!」と勧告されいてる関数だから、 使ってはいけない。 document.write() を使わなくても、 ドキュメントに HTML コードやテキストを書き出す 正しい方法は幾らでもあるんで、 他の方法で書き出すようにする。 ■■■ 配列のフィルタリング ■■■ 点数を格納した配列から、 「不可」に該当する人数をカウントするだけなら、 質問のコードのような条件分岐の処理は一切いらない。 配列の filter() メソッドを使って 60 点未満のリストに絞りこみ、 その配列の長さを取得すればいいだけ。 ──────────────── // 点数リスト const scores = [ 87, 65, 93, 71, 83, 96, 78, 55, 70, 69, 45, 62 ]; // 不可の人数 const hukanum = scores.filter( value => value<60 ).length; // 確認 console.log( hukanum ); ──────────────── ■■■ ランク付け+不可人数 ■■■ 秀、優、良、可、不可のランク付けをして、 その上で不可の人数を数えたいのであれば、 ──────────────── // 点数リスト const scores = [ 87, 65, 93, 71, 83, 96, 78, 55, 70, 69, 45, 62 ]; // ランク付け const ranks = scores.map( value => value>=90 ? "秀" : value>=80 ? "優" : value>=70 ? "良" : value>=60 ? "可" : "不可" ); // 不可の人数 const hukanum = ranks.filter( rank => rank==="不可" ).length; // 確認 console.log( ranks ); console.log( hukanum ); ──────────────── こんな感じ。 まず、 点数リスト scores に map() メソッドを使い、 各点数1つ1つに対して点数ごとのランクのリスト ranks に変換、 そのうえで、 filter() を使ってランクリストの中から "不可" の個数を数えている。 ランク付けの条件分岐については、 こういった条件分岐は if() 文よりも 三項演算子(条件式 ? 真のとき : 偽のとき)を連結する方が 適しているんで三項演算子で実装している。
1人がナイス!しています
質問者からのお礼コメント
お二人とも大変助かりました。ありがとうございました。
お礼日時:1/24 23:01