回答編集履歴

3

コードを修正

2019/07/12 17:52

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -52,6 +52,8 @@
52
52
 
53
53
 
54
54
 
55
+
56
+
55
57
  //Twitterのように投稿から投稿からハッシュタグが含まれるものをリンクに変えるコードのhtml、JSのみ
56
58
 
57
59
  //一つの投稿に #がついている文字列は、スペースが空くかそれ以降何もないとハッシュタグとみなされる
@@ -74,25 +76,25 @@
74
76
 
75
77
  function addAnchrInTag(str){
76
78
 
77
- return str.split(' #').map( (str,i) =>{
79
+ return str.split(' #').map( (s,i) =>{
78
80
 
79
- if (i === 0 && str.indexOf('#') === -1){
81
+ if (i === 0 && s.indexOf('#') === -1){
80
82
 
81
83
  // split後の先頭の文字はurl化しない
82
84
 
83
- return str
85
+ return s
84
86
 
85
- } else if (i === 0 && str.indexOf('#') === 0){
87
+ } else if (i === 0 && s.indexOf('#') === 0){
86
88
 
87
89
  // 文章の頭のタグはそのままurl化
88
90
 
89
- return addAnchr(str)
91
+ return addAnchr(s)
90
92
 
91
93
  }
92
94
 
93
95
  // 文章の途中にあるタグは#が取り除かれているので、#をつけ直してurl化
94
96
 
95
- return addAnchr('#' + str)
97
+ return addAnchr('#' + s)
96
98
 
97
99
  }).join(' ')
98
100
 

2

説明を追加

2019/07/12 17:52

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -13,6 +13,12 @@
13
13
  最近のJavaScriptではこのような書き方はよく見られるので、JavaScriptでやるならこういう書き方のほうが良いかなと思います。(もちろん掲示されているコードが間違っているわけではないので、好みの問題だとは思います)
14
14
 
15
15
 
16
+
17
+ 特に、今回のように文字列を解析して変換する処理においては、`split(特定の記号で文字列を分割して配列にする)` → `map(配列要素一個一個に対して、同じ処理を適用)` → `join(配列を再び文字列に結合する)`
18
+
19
+ の流れはかなり便利なので、覚えておくと役に立つと思います。
20
+
21
+ (サンプルコードでは`str.split().map().join()`のメソッドチェーンが使われているのがわかるかなと思います)
16
22
 
17
23
 
18
24
 

1

文章の改善

2019/07/12 17:46

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -1,3 +1,7 @@
1
+ どの部分に無理矢理感を感じられているのかわかりませんが、文字列のパース部分だと解釈して、回答させていただきます。意図に反した回答でしたら申し訳ありません。
2
+
3
+
4
+
1
5
  もともと文字列のパースは、何らかのライブラリを使わない限りは愚直にやるしかないと思うので、提示されているロジックで解析処理を行う形でよいのではないかと思います。
2
6
 
3
7