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

回答編集履歴

2

よく考えたらジェネレータ内でforループ使っても質問の条件を満たさないのでは、と思ったので追記

2021/12/16 01:16

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37579

answer CHANGED
@@ -43,4 +43,31 @@
43
43
  })(arr, str)]
44
44
 
45
45
  // [/abc/]
46
+ ```
47
+
48
+ ---
49
+
50
+ # よく考えたらジェネレータ内でforループ使っても質問の条件を満たさないのでは、と思ったので追記
51
+
52
+ ジェネレータ移譲再帰で。
53
+
54
+ ```js
55
+
56
+ const arr = [
57
+ /abcde/,
58
+ /abc/,
59
+ /ab/,
60
+ ];
61
+ const str = "abc";
62
+
63
+ [...(function* g(arr, str) {
64
+ const x = arr.next().value
65
+ if (x.test(str)) {
66
+ yield x;
67
+ return;
68
+ }
69
+ yield* g(arr, str);
70
+ })(arr.values(), str)]
71
+
72
+ // [/abc/]
46
73
  ```

1

コメントを受けて追記

2021/12/16 01:16

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37579

answer CHANGED
@@ -19,4 +19,28 @@
19
19
 
20
20
  // [/abc/]
21
21
 
22
+ ```
23
+
24
+ ---
25
+
26
+ # コメントを受けて追記
27
+
28
+ ```js
29
+ const arr = [
30
+ /abcde/,
31
+ /abc/,
32
+ /ab/,
33
+ ];
34
+ const str = "abc";
35
+
36
+ [...(function* (arr, str) {
37
+ for (x of arr) {
38
+ if (x.test(str)) {
39
+ yield x;
40
+ return;
41
+ }
42
+ }
43
+ })(arr, str)]
44
+
45
+ // [/abc/]
22
46
  ```