回答編集履歴

2

テキスト修正

2018/06/28 00:28

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -95,3 +95,15 @@
95
95
  document.write("The sum is: " + sum + ". The average is: " + avg + "<br/>");
96
96
 
97
97
  ```
98
+
99
+
100
+
101
+ ただし、上記の回答についているコメント
102
+
103
+
104
+
105
+ > elegant !== fast. Array.prototype.reduce requires the execution of a function on each iteration which is far slower (orders of magnitude) than running a simple loop. jsperf.com/speedy-summer-upper – furf May 7 '13 at 18:47
106
+
107
+
108
+
109
+ からの[リンク先](https://jsperf.com/speedy-summer-upper) にあるように、処理の速さをとるなら、ループのほうがよいです。特に、配列の要素数が多くなったときに差が出てきそうです。

1

テキスト修正

2018/06/28 00:28

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -49,3 +49,49 @@
49
49
 
50
50
 
51
51
  参考になりましたら幸いです。
52
+
53
+
54
+
55
+ ---
56
+
57
+ **補足**
58
+
59
+
60
+
61
+ `reduce` を使って合計を算出するのは、以下の質問
62
+
63
+
64
+
65
+ [https://stackoverflow.com/questions/10359907/array-sum-and-average](https://stackoverflow.com/questions/10359907/array-sum-and-average)
66
+
67
+
68
+
69
+ で、多数の Good がついている回答(上から2番目)にも、次のようなサンプルで出ています。
70
+
71
+
72
+
73
+ ```javascript
74
+
75
+ var sum, avg = 0;
76
+
77
+
78
+
79
+ // dividing by 0 will return Infinity
80
+
81
+ // arr must contain at least 1 element to use reduce
82
+
83
+ if (arr.length)
84
+
85
+ {
86
+
87
+ sum = arr.reduce(function(a, b) { return a + b; });
88
+
89
+ avg = sum / arr.length;
90
+
91
+ }
92
+
93
+
94
+
95
+ document.write("The sum is: " + sum + ". The average is: " + avg + "<br/>");
96
+
97
+ ```