回答編集履歴

2

もうちょっとコードを簡潔に書けたので修正

2021/08/04 11:22

投稿

stmkza
stmkza

スコア478

test CHANGED
@@ -8,9 +8,7 @@
8
8
 
9
9
  return Math.max(...Object.values(arr.reduce((acc, val) => {
10
10
 
11
- if(!acc[val]) acc[val] = 0;
11
+ acc[val] = (acc[val] || 0) + 1;
12
-
13
- acc[val]++;
14
12
 
15
13
  return acc;
16
14
 

1

コメント付きのコードを追記

2021/08/04 11:22

投稿

stmkza
stmkza

スコア478

test CHANGED
@@ -19,3 +19,55 @@
19
19
  }
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ コードの説明を加えたものを書いておきます。
26
+
27
+
28
+
29
+ ```javascript
30
+
31
+ function CountArrayValue(arr, thr) {
32
+
33
+ // {値: 出現回数} の形式のオブジェクト
34
+
35
+ const countsPerValue = arr.reduce((counts, currentValue) => {
36
+
37
+ // もし初回出現(出現回数がセットされていない)なら出現回数のところを0に設定
38
+
39
+ if(!counts[currentValue]) counts[currentValue] = 0;
40
+
41
+
42
+
43
+ // 出現回数を1回増やす
44
+
45
+ counts[currentValue]++;
46
+
47
+
48
+
49
+ return counts;
50
+
51
+ }, {});
52
+
53
+
54
+
55
+ // ここでは出現回数だけを知りたいので、出現回数だけの配列にする
56
+
57
+ const counts = Object.values(countsPerValue);
58
+
59
+
60
+
61
+ // countsの最大値を求める
62
+
63
+ const maxCount = Math.max(...counts);
64
+
65
+
66
+
67
+ // 最大の出現回数が閾値以上か判定
68
+
69
+ return maxCount >= thr;
70
+
71
+ }
72
+
73
+ ```