回答編集履歴
1
可読性
test
CHANGED
@@ -92,4 +92,84 @@
|
|
92
92
|
|
93
93
|
|
94
94
|
|
95
|
+
### 可読性
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
> 私の書いたコードなんですが、読みにくいでしょうか?
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
気になったのはコードではなく、条件「reduceを用いること」の方です。
|
104
|
+
|
105
|
+
質問文のコードなら、文字列が対象なのでmapは使えず、reduceを使いますが、
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
1. reduce後に最後のカンマを取り除く
|
110
|
+
|
111
|
+
2. indexが最後なら、カンマを出力しない (毎回、indexを検査するのでパフォーマンス低下)
|
112
|
+
|
113
|
+
3. array#shift()で最初の要素だけ別途処理してから、reduceする
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
の対策が必要となりますので、どれを採用するかを踏まえて吟味する必要があります。
|
118
|
+
|
119
|
+
個人的には**可読性は使ったコードにどれだけ熟知しているか次第**だと思うので、言及しません。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
ただ、「一つの文字列を結合して増やしていく方法」は「配列からmap->joinする方法」と比較して、**パフォーマンスに優れるメリット**があります。
|
124
|
+
|
125
|
+
パフォーマンスを優先させるポリシーでコードを書くなら、私は `while` or `for` を使いたくなります。
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
```JavaScript
|
130
|
+
|
131
|
+
function sample (array) {
|
132
|
+
|
133
|
+
if (!array.length) return '{}';
|
134
|
+
|
135
|
+
const value = array[0];
|
136
|
+
|
137
|
+
let body = '{' + value + ':' + value + '0';
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
for (let i = 1, len = array.length; i < len; ++i) {
|
142
|
+
|
143
|
+
const value = array[i];
|
144
|
+
|
145
|
+
body += ',' + value + ':""' + value + '0"';
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
return body + '}';
|
152
|
+
|
153
|
+
}
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
const array = ["a", "b"];
|
158
|
+
|
159
|
+
console.log(sample(array));
|
160
|
+
|
161
|
+
```
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
結局、コードの良し悪しは「自分がコードに何を求めるか」次第です。
|
166
|
+
|
167
|
+
言い換えるなら、**何を目的として「reduceを用いること」を条件に指定したのか**です。
|
168
|
+
|
169
|
+
そこが読み取れませんでした。
|
170
|
+
|
171
|
+
背景もなしに条件が明示されたので、条件に意味はない「課題のコード」のように思いました。
|
172
|
+
|
173
|
+
|
174
|
+
|
95
175
|
Re: ah6BD2gZo5GnjnT さん
|