回答編集履歴

2

追記

2022/06/20 07:02

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -30,3 +30,43 @@
30
30
  </table>
31
31
  );
32
32
  ```
33
+
34
+ ---
35
+
36
+ まず、map の中の関数の { return ...; } が省略されてる件ですが、アロー関数にはいろんな省略形が用意されてまして、特に関数の中身が return だけの場合は {} と return を省略できます。例えば、(a, b) => { return a + b; } の代わりに (a, b) => a + b と書けます。
37
+ 参考: [JavaScriptのアロー関数の省略記法について - Qiita](https://qiita.com/deBroglieeeen/items/f146afd1cdf1e89c4121)
38
+ 参考: [JavaScript省略形多すぎ問題 - Qiita](https://qiita.com/nayuneko/items/e3ac089bdd6f6d726f9f)
39
+
40
+ そして、求める結果はこんな感じでしょうか。
41
+
42
+ ```tsx
43
+ return (
44
+ <table>
45
+ <tbody>
46
+ {
47
+ Object.entries(dict).map(([category, products]) => (
48
+ <>
49
+ <tr>
50
+ <th colSpan={2}>{category}</th>
51
+ </tr>
52
+ {
53
+ products.map(product => (
54
+ <tr>
55
+ <td>
56
+ {
57
+ product.stocked ?
58
+ product.name :
59
+ <span style={{ color: 'red' }}>product.name</span>
60
+ }
61
+ </td>
62
+ <td>{product.price}</td>
63
+ </tr>
64
+ ))
65
+ }
66
+ </>
67
+ ))
68
+ }
69
+ </tbody>
70
+ </table>
71
+ );
72
+ ```

1

ちょっとした修正

2022/06/19 17:14

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -6,7 +6,7 @@
6
6
  }
7
7
  ```
8
8
 
9
- なので、Object.entries(dict) の型は [string, product[]][] ですね。これを map すると、例えばこんな感じでしょうか。
9
+ なので、Object.entries(dict) の型は [string, product[]][] ですね。(Array<[string, Array<product>]> と書いた方が分かりやすいかも?) これを map すると、例えばこんな感じでしょうか。
10
10
 
11
11
  ```tsx
12
12
  const dict = _(productList).groupBy('category').value();