回答編集履歴

3

おまけ追加

2018/02/08 03:50

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -113,3 +113,71 @@
113
113
  console.log("最高得点は" + max.points + "点で" + max.name + "さんです");
114
114
 
115
115
  ```
116
+
117
+
118
+
119
+ ---
120
+
121
+
122
+
123
+ 【おまけ】 Lodashによるスタイリッシュな解決法
124
+
125
+
126
+
127
+ [Lodash](https://lodash.com/docs/4.17.5)というライブラリはこういったオブジェクトの配列を計算するのが超得意です。
128
+
129
+ 平均得点も最高得点もたったの1行です。
130
+
131
+ この為にオブジェクトの配列にしろと言ったといっても過言ではありません。
132
+
133
+
134
+
135
+ 下記のコードを[https://codepen.io/travist/full/jrBjBz/](https://codepen.io/travist/full/jrBjBz/)に貼り付けて結果を確認してみてください
136
+
137
+
138
+
139
+ ```JavaScript
140
+
141
+ var students = [
142
+
143
+ {name: "山田", points: 80},
144
+
145
+ {name: "高橋", points: 75},
146
+
147
+ {name: "田中", points: 85},
148
+
149
+ {name: "鈴木", points: 100},
150
+
151
+ {name: "吉田", points: 65}
152
+
153
+ ];
154
+
155
+ var avg = _.meanBy(students, function(it){ return it.points });
156
+
157
+ var max = _.maxBy(students, function(it){ return it.points });
158
+
159
+
160
+
161
+ result = {avg: avg, max: max};
162
+
163
+ ```
164
+
165
+
166
+
167
+ ```JSON
168
+
169
+ {
170
+
171
+ "avg": 81,
172
+
173
+ "max": {
174
+
175
+ "name": "鈴木",
176
+
177
+ "points": 100
178
+
179
+ }
180
+
181
+ }
182
+
183
+ ```

2

コードの不具合修正

2018/02/08 03:50

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -96,9 +96,9 @@
96
96
 
97
97
  sum += student.points;
98
98
 
99
- if (max.points < students.points) {
99
+ if (max.points < student.points) {
100
100
 
101
- max = students;
101
+ max = student;
102
102
 
103
103
  }
104
104
 

1

一箇所追加

2018/02/08 03:34

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -58,6 +58,14 @@
58
58
 
59
59
 
60
60
 
61
+ `"平均値は"+sum/5+"点です"`に関しては`/`の結合が優先度が高いので動作しそうですが、
62
+
63
+ 数値計算の場合は変な動きをすることがあります。
64
+
65
+ ここは明示的に括弧で括って`"平均値は"+(sum/5)+"点です"`と記載した方が分かりやすいです。
66
+
67
+
68
+
61
69
  下記を反映してリファクタリングかけるとこうなりました。
62
70
 
63
71