いつもお世話になります。
2つの配列に共通している値があるかどうかを判断する簡潔な方法をご存知でしたら教えて下さい。
Setに変換して共通要素があるかどうかを判断しようと思っていたのですが、Boolのみ必要ですので
Setに変換するまでもないような気がして、しっくり来ません。なにか簡単な方法はありませんか?
swift
1 2let indexPaths: [IndexPath] = [IndexPath(row: 0, section: 0)] 3 4func existsCommonElement() -> Bool { 5 guard let selectedRowsIndexPaths 6 = tableView.indexPathForSelectedRows else { return false } 7 8 // ここでindexPathsとselectedRowsIndexPathsに共通の要素がある場合はtrueを返したい。 9 // Boolのみ必要で、その他の要素は必要がないのでsetに変換するまでもないような? 10 11} 12
エラーがでます
swift
1 2// 面倒なので[int]で、 3let indexPaths = [1, 2, 3, 4] 4let selectedRowsIndexPaths = [6, 7, 8, 9] 5 6 7func hoge() -> Bool { 8 indexPaths.forEach{ 9 if selectedRowsIndexPaths.contains($0) { 10 return true // <= error / Unexpected non-void return value in void function 11 } 12 } 13 return false 14}
swift
1let aArray_nilAble: [Int]? = [Int](0...100) 2let bArray = [Int](200...300) 3 4func hoge() -> Bool { 5 6 guard let aArray = aArray_nilAble else { return false } 7 8 return !aArray.filter(bArray.contains).isEmpty 9 10 // 重複あり[(0...100)-(50...150)]: 0.22072505950927734 11 // 重複なし[(0...100)-(200...300)]: 0.30579400062561035 12} 13 14func fuga() -> Bool { 15 16 guard let aArray = aArray_nilAble else { return false } 17 18 return aArray.contains(where: bArray.contains) 19 20 // 重複あり[(0...100)-(50...150)]: 0.1724480390548706 21 // 重複なし[(0...100)-(200...300)]: 0.3085750341415405 22} 23 24func piyo() -> Bool { 25 26 guard let aArray = aArray_nilAble else { return false } 27 let aSet = Set(aArray) 28 let bSet = Set(bArray) 29 30 return !(aSet.isDisjoint(with: bSet)) 31 32 // 重複あり[(0...100)-(50...150)]: 0.17476892471313477 33 // 重複なし[(0...100)-(200...300)]: 0.1812349557876587 34} 35 36// 100回繰り返す 37func repeatProcess() { 38 39 for _ in 1...100 { 40 print(piyo()) 41 } 42 43} 44 45// 計測 46 47let start = Date() 48 49repeatProcess() 50 51let elapsed = Date().timeIntervalSince(start) 52 53print(elapsed) 54
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/07 03:05
退会済みユーザー
2020/05/07 04:30
2020/05/07 05:51
退会済みユーザー
2020/05/07 05:57 編集