teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

テキスト修正

2018/06/28 00:28

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -46,4 +46,10 @@
46
46
  }
47
47
 
48
48
  document.write("The sum is: " + sum + ". The average is: " + avg + "<br/>");
49
- ```
49
+ ```
50
+
51
+ ただし、上記の回答についているコメント
52
+
53
+ > 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
54
+
55
+ からの[リンク先](https://jsperf.com/speedy-summer-upper) にあるように、処理の速さをとるなら、ループのほうがよいです。特に、配列の要素数が多くなったときに差が出てきそうです。

1

テキスト修正

2018/06/28 00:28

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -23,4 +23,27 @@
23
23
  [63, 64, 97, 98]
24
24
 
25
25
 
26
- 参考になりましたら幸いです。
26
+ 参考になりましたら幸いです。
27
+
28
+ ---
29
+ **補足**
30
+
31
+ `reduce` を使って合計を算出するのは、以下の質問
32
+
33
+ [https://stackoverflow.com/questions/10359907/array-sum-and-average](https://stackoverflow.com/questions/10359907/array-sum-and-average)
34
+
35
+ で、多数の Good がついている回答(上から2番目)にも、次のようなサンプルで出ています。
36
+
37
+ ```javascript
38
+ var sum, avg = 0;
39
+
40
+ // dividing by 0 will return Infinity
41
+ // arr must contain at least 1 element to use reduce
42
+ if (arr.length)
43
+ {
44
+ sum = arr.reduce(function(a, b) { return a + b; });
45
+ avg = sum / arr.length;
46
+ }
47
+
48
+ document.write("The sum is: " + sum + ". The average is: " + avg + "<br/>");
49
+ ```