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

回答編集履歴

2

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

2021/08/04 11:22

投稿

stmkza
stmkza

スコア478

answer CHANGED
@@ -3,8 +3,7 @@
3
3
  ```javascript
4
4
  function CountArrayValue(arr, thr) {
5
5
  return Math.max(...Object.values(arr.reduce((acc, val) => {
6
- if(!acc[val]) acc[val] = 0;
6
+ acc[val] = (acc[val] || 0) + 1;
7
- acc[val]++;
8
7
  return acc;
9
8
  }, {}))) >= thr;
10
9
  }

1

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

2021/08/04 11:22

投稿

stmkza
stmkza

スコア478

answer CHANGED
@@ -8,4 +8,30 @@
8
8
  return acc;
9
9
  }, {}))) >= thr;
10
10
  }
11
+ ```
12
+
13
+ コードの説明を加えたものを書いておきます。
14
+
15
+ ```javascript
16
+ function CountArrayValue(arr, thr) {
17
+ // {値: 出現回数} の形式のオブジェクト
18
+ const countsPerValue = arr.reduce((counts, currentValue) => {
19
+ // もし初回出現(出現回数がセットされていない)なら出現回数のところを0に設定
20
+ if(!counts[currentValue]) counts[currentValue] = 0;
21
+
22
+ // 出現回数を1回増やす
23
+ counts[currentValue]++;
24
+
25
+ return counts;
26
+ }, {});
27
+
28
+ // ここでは出現回数だけを知りたいので、出現回数だけの配列にする
29
+ const counts = Object.values(countsPerValue);
30
+
31
+ // countsの最大値を求める
32
+ const maxCount = Math.max(...counts);
33
+
34
+ // 最大の出現回数が閾値以上か判定
35
+ return maxCount >= thr;
36
+ }
11
37
  ```