回答編集履歴

3

テキスト修正

2020/08/12 23:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  let bun2 = '';
38
38
 
39
- const matches = [...bun.matchAll(/pen/g)];
39
+ const matches = bun.matchAll(/pen/g);
40
40
 
41
41
 
42
42
 

2

テキスト修正

2020/08/12 23:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -36,15 +36,19 @@
36
36
 
37
37
  let bun2 = '';
38
38
 
39
+ const matches = [...bun.matchAll(/pen/g)];
39
40
 
40
41
 
42
+
41
- for (const m of [...bun.matchAll(/pen/g)]) {
43
+ for (const m of matches) {
42
44
 
43
45
  const spaces = ' '.repeat(m.index - bun2.length);
44
46
 
45
47
  bun2 += `${spaces}${m[0]}`;
46
48
 
47
49
  }
50
+
51
+
48
52
 
49
53
  bun2 += ' '.repeat(bun.length - bun2.length);
50
54
 

1

テキスト修正

2020/08/12 22:43

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -28,4 +28,32 @@
28
28
 
29
29
 
30
30
 
31
+ ただし、上記のやり方だと、`bun` の各文字のインデクス `i` について、`matches` に含まれるマッチした区間に含まれていないかを、すべての区間について調べるところが無駄です。以下は、この無駄を行わないコードです。
32
+
33
+
34
+
35
+ ```javascript
36
+
37
+ let bun2 = '';
38
+
39
+
40
+
41
+ for (const m of [...bun.matchAll(/pen/g)]) {
42
+
43
+ const spaces = ' '.repeat(m.index - bun2.length);
44
+
45
+ bun2 += `${spaces}${m[0]}`;
46
+
47
+ }
48
+
49
+ bun2 += ' '.repeat(bun.length - bun2.length);
50
+
51
+
52
+
53
+ ```
54
+
55
+ - **動作確認用サンプル3:** [https://codepen.io/jun68ykt/pen/NWNxxZM](https://codepen.io/jun68ykt/pen/NWNxxZM?editors=0012)
56
+
57
+
58
+
31
59
  以上、参考になれば幸いです。