回答編集履歴

1

考え方変更

2020/06/26 09:33

投稿

MasakiHori
MasakiHori

スコア3384

test CHANGED
@@ -1,3 +1,63 @@
1
+ もう解決した質問ですが、気になってしまったのですみません。
2
+
3
+ 安直に「flatにしてやればいいのでは? 」と書きましたが、さすがに乱暴すぎたので少し考えなおしました。
4
+
5
+ Arrayに対して2次元配列の場合その中身に対象のインスタンスが存在するかを確認するメソッドを追加してみました。
6
+
7
+
8
+
9
+ ```swift
10
+
11
+ extension Array {
12
+
13
+
14
+
15
+ func deepContains<E: Equatable>(_ element: E) -> Bool
16
+
17
+ where Element == [E] {
18
+
19
+
20
+
21
+ contains { $0.contains(element) }
22
+
23
+ }
24
+
25
+ }
26
+
27
+
28
+
29
+ let imageStringArray = [
30
+
31
+ ["image1", "image5", "image3"],
32
+
33
+ ["image2", "image6"],
34
+
35
+ ["image4"],
36
+
37
+ ]
38
+
39
+
40
+
41
+ let fileName = (1...)
42
+
43
+ .lazy
44
+
45
+ .map { "image($0)" }
46
+
47
+ .first { !imageStringArray.deepContains($0) }! // nilになることはない。 Int.maxを超えるのでクラッシュするから。
48
+
49
+ ```
50
+
51
+
52
+
53
+ 条件によりますが少しパフォーマンスが上がっているはずです。
54
+
55
+
56
+
57
+ ----
58
+
59
+
60
+
1
61
  ややこしく考えずにimageStringArrayをflatにしてやればいいのでは?
2
62
 
3
63