回答編集履歴

2

おまけ追加

2019/04/11 11:39

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -100,9 +100,9 @@
100
100
 
101
101
  // ちょっと洒落た作り方でsubject_pointsを作ってみる
102
102
 
103
- let subject_points = ['national_language', 'english', 'mathematics', 'science', 'society'].map(function(id){
103
+ const subject_points = ['national_language', 'english', 'mathematics', 'science', 'society'].map(function(id){
104
104
 
105
- return parseInt($('#'+id).val();
105
+ return parseInt($('#'+id).val());
106
106
 
107
107
  });
108
108
 
@@ -127,3 +127,69 @@
127
127
  5個の数値を合計する程度のことしかやっていないので、誤差みたいなものでしょう。
128
128
 
129
129
  一気に計算しようと頑張ると辛くなります。
130
+
131
+
132
+
133
+ ---
134
+
135
+
136
+
137
+ 蛇足のおまけ
138
+
139
+
140
+
141
+ letを使っているということはIE11対応しなくて良いんでしょうか?
142
+
143
+ ならばES2015の書き方が出来ますね。
144
+
145
+
146
+
147
+ もし私がガチで作るならこんな感じになるでしょう。
148
+
149
+ 数値の配列から合計を求めるのは1行のイディオムで可能ですので、
150
+
151
+ achievementが求めるものを平均点に変更して割り出します。
152
+
153
+
154
+
155
+ ```JavaScript
156
+
157
+ function achievement (avg) {
158
+
159
+ if (avg >= 80) return "A";
160
+
161
+ if (avg >= 60) return "B";
162
+
163
+ if (avg >= 40) return "C";
164
+
165
+ return "D";
166
+
167
+ }
168
+
169
+
170
+
171
+ function score_indicate(){
172
+
173
+ const points = ['national_language', 'english', 'mathematics', 'science', 'society'].map(id => parseInt($('#'+id).val()));
174
+
175
+ const sum = points.reduce((a, b) => a + b, 0);
176
+
177
+ const avg = sum / points.length;
178
+
179
+
180
+
181
+ $("#sum_indicate").text(sum);
182
+
183
+ $('#avarage_indicate').text(avg);
184
+
185
+ $('#evaluation').text(achievement(avg));
186
+
187
+ }
188
+
189
+ ```
190
+
191
+
192
+
193
+ もっと頑張ればまだまだ行数やコード量は減らせると思いますが、
194
+
195
+ 可読性が犠牲になると思うのでこれが一つの完成系じゃないかなぁと思います。

1

if文の中身を修正

2019/04/11 11:39

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -70,23 +70,13 @@
70
70
 
71
71
  var a = avg(points);
72
72
 
73
- if (a >= 80) {
73
+ // 確実に1行で終わるケースならこれでいい
74
74
 
75
- return "A";
75
+ if (a >= 80) return "A";
76
76
 
77
- }
77
+ if (a >= 60) return "B";
78
78
 
79
- if (a >= 60) {
80
-
81
- return "B";
82
-
83
- }
84
-
85
- if (a >= 40) {
86
-
87
- return "C";
79
+ if (a >= 40) return "C";
88
-
89
- }
90
80
 
91
81
  return "D";
92
82