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

回答編集履歴

5

コード修正

2021/10/30 11:52

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -44,8 +44,8 @@
44
44
  return (
45
45
  <div className="grid">
46
46
  {list_by_2.map(items => ( // ​itemsは[{...}, {...}]
47
- ​ items.map(item => (
48
- <div className="grid-inner">
47
+ <div className="grid_inner">
48
+ ​ items.map(item => (
49
49
  ​ <div className="title">
50
50
  ​<a href={item._id}>{item.name}</a>
51
51
  ​ </div>
@@ -54,8 +54,8 @@
54
54
  ​<li key={_id}><a href={_id}>{name}</a></li>
55
55
  ​)}
56
56
  ​</ul>
57
- ​ </div>
58
- )
57
+ )
58
+ </div>
59
59
  ​)}
60
60
  ​ </div>
61
61
  ​)

4

コード修正

2021/10/30 11:51

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -50,7 +50,7 @@
50
50
  ​<a href={item._id}>{item.name}</a>
51
51
  ​ </div>
52
52
  ​ <ul className="footer-category-links">
53
- ​ {item.children.map(({_id, name}) => ( // item => ...の代わりに ({_id, name}) => ...と分割代入しています
53
+ ​ {item.children.map(({_id, name}) => ( // child => ...の代わりに ({_id, name}) => ...と分割代入しています
54
54
  ​<li key={_id}><a href={_id}>{name}</a></li>
55
55
  ​)}
56
56
  ​</ul>

3

不要な文面を削除

2021/10/27 09:26

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -33,7 +33,6 @@
33
33
  これを`list`に適用すると、`[ [{...}, {...}], [{...}, {...}], ... ]`と`list`の要素が2つづつ配列に入った配列になります。そして`list_by_2.map(items => ...)`の`items`は`[{...}, {...}]`となりますから、再び`items.map(item => ...)`とすることで`item`が`{_id: ..., children: ..., name: ...}`となります。
34
34
 
35
35
  そんな感じで書いていくと、以下のようになると思います。
36
- (ReactというかJSXの書き方を間違えているところがあったので、適宜修正しています)
37
36
 
38
37
  ```jsx
39
38
  // from: https://qiita.com/guttyar2213/items/46230300c5100a06198c

2

誤字修正

2021/10/27 09:24

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -21,15 +21,16 @@
21
21
 
22
22
  ---
23
23
 
24
- 以上の話を踏まえた上で、実現したいことは`list`の要素を2つづつ`<div class="grid-inner">〜</div>`に入れるということでよろしいでしょうか。
24
+ 以上の話を踏まえた上で、実現したいことは`list`の要素を2つづつ`<div class="grid-inner">〜</div>`に入れるということでよろしいでしょうか。であれば、まず`list`の要素を2つづつ取り出して`list_by_2`という配列にし、その配列を`Array.prototype.map`で操作していきましょう。
25
25
 
26
- であれば、まず`list`の要素を2つづつ取り出して`list_by_2`という配列にし、その配列を`Array.prototype.map`ればよいと思います。
26
+ 「配列の要素を2つづつ取り出して配列にする」ために「配列をn個づつに分割る」関数を定義します。
27
+ [JSで配列をn個ずつに分割 - Qiita](https://qiita.com/guttyar2213/items/46230300c5100a06198c)のコードを使っています。
27
28
 
28
- 「配列の要素を2つづつ取り出して配列にする」ために以下の関数を定義します。
29
+ ```js
29
- [JSで配列をn個ずつに分割 - Qiita](https://qiita.com/guttyar2213/items/46230300c5100a06198c)
30
+ const split = (array, n) => array.reduce((a, c, i) => i % n == 0 ? [...a, [c]] : [...a.slice(0, -1), [...a[a.length - 1], c]], [])
31
+ ```
30
32
 
31
- これを`list`に適用すると、`[ [{...}, {...}], [{...}, {...}], ... ]`と`list`の要素が2つづつ配列に入った配列になります。
32
- そして`list_by_2.map(items => ...)`の`items`は`[{...}, {...}]`となりますから、再び`items.map(item => ...)`とすることで`item`が`{_id: ..., children: ..., name: ...}`となります。
33
+ これを`list`に適用すると、`[ [{...}, {...}], [{...}, {...}], ... ]`と`list`の要素が2つづつ配列に入った配列になります。そして`list_by_2.map(items => ...)`の`items`は`[{...}, {...}]`となりますから、再び`items.map(item => ...)`とすることで`item`が`{_id: ..., children: ..., name: ...}`となります。
33
34
 
34
35
  そんな感じで書いていくと、以下のようになると思います。
35
36
  (ReactというかJSXの書き方を間違えているところがあったので、適宜修正しています)

1

誤字修正

2021/10/27 09:23

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  `xs.map(f)`は配列`xs`のすべての要素に対して関数`f`を適用した結果の配列を返します。
2
- 言い換えれば、`xs`のすべての要素に対して`f(xs[0])`, `f(xs[1])`, ...と適用した結果の配列を返します。具体的には、以下のように使います。
2
+ 言い換えれば、`xs`のすべての要素に対して`f(xs[0])`, `f(xs[1])`, ...と適用した結果の配列を返します。
3
+ 具体的には、以下のように使います。
3
4
 
4
5
  ```js
5
6
  const xs = [0, 1, 2]