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

回答編集履歴

4

訂正

2018/02/01 04:26

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -18,7 +18,8 @@
18
18
 
19
19
  このコードで親からCardに渡す引数が`<Card list="a,b,c" />`であれば`join`は間違いです。渡されたlistは**文字列**であり、 `join`メソッドを持ちません。文字列を分解する`split`で配列に分解して返せば`{eachLi(props.list)}`部分は`abc`という文字列になります。
20
20
 
21
- `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`または`join()`としてください。
21
+ `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`~~または`join()`~~としてください。
22
+ (嘘つきました。引数無しの`join()`だとデフォルトで`,`が挟まります)
22
23
 
23
24
  ### 追記
24
25
  Cardにlistが渡されないパターンが存在する場合、Cardの中でlistを「存在する前提」で使ってはいけません。必ず`null`や`undefined`になっていないかチェックする必要があります。

3

追記

2018/02/01 04:26

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -18,4 +18,18 @@
18
18
 
19
19
  このコードで親からCardに渡す引数が`<Card list="a,b,c" />`であれば`join`は間違いです。渡されたlistは**文字列**であり、 `join`メソッドを持ちません。文字列を分解する`split`で配列に分解して返せば`{eachLi(props.list)}`部分は`abc`という文字列になります。
20
20
 
21
- `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`または`join()`としてください。
21
+ `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`または`join()`としてください。
22
+
23
+ ### 追記
24
+ Cardにlistが渡されないパターンが存在する場合、Cardの中でlistを「存在する前提」で使ってはいけません。必ず`null`や`undefined`になっていないかチェックする必要があります。
25
+ ```JavaScript
26
+ function eachLi(props) {
27
+ console.log(props);
28
+ if(Array.isArray(props)) { // propsが配列である
29
+ return props.join(",");
30
+ }
31
+ else { // propsが配列ではない(nullやundefinedだった場合)
32
+ return "";
33
+ }
34
+ }
35
+ ```

2

修正

2018/02/01 04:21

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -18,4 +18,4 @@
18
18
 
19
19
  このコードで親からCardに渡す引数が`<Card list="a,b,c" />`であれば`join`は間違いです。渡されたlistは**文字列**であり、 `join`メソッドを持ちません。文字列を分解する`split`で配列に分解して返せば`{eachLi(props.list)}`部分は`abc`という文字列になります。
20
20
 
21
- `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`としてください。
21
+ `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`または`join()`としてください。

1

修正

2018/02/01 04:03

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -16,5 +16,6 @@
16
16
  export default Card;
17
17
  ```
18
18
 
19
- このコードで親からCardに渡す引数が`<Card list="a,b,c" />`であれば`join`は間違いです。渡されたlistは**文字列**であり、 joinメソッドを持ちません。
19
+ このコードで親からCardに渡す引数が`<Card list="a,b,c" />`であれば`join`は間違いです。渡されたlistは**文字列**であり、 `join`メソッドを持ちません。文字列を分解する`split`で配列に分解して返せば`{eachLi(props.list)}`部分は`abc`という文字列になります。
20
+
20
- `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。
21
+ `<Card list={[a,b,c]} />`であれば、渡されたlistは**配列**であり、`join`が正しいです。ただし、`join`で得られる結果の文字列は`a,b,c`であり、間に`join`に渡した引数の`,`が挟まれます。なにもはさみたくないなら`join("")`としてください。