Swiftで配列の先頭から要素を検索・取得する方法について記載します。
値は取得する必要がなく、存在確認( true / false )のみ行う場合は、配列に特定の値が存在するか判定する方法 をご覧ください。
目次
先頭から要素を検索・取得する方法
先頭から要素を検索・取得するには、first もしくは firstIndex を使用します。
first
先頭から要素を検索し、該当する要素の値を返します。
該当する要素が存在しない場合、nil を返します。
firstIndex
先頭から要素を検索し、該当する要素のインデックスを返します。
該当する要素が存在しない場合、nil を返します。
1. first メソッドの使い方
引数
検索条件のクロージャーを指定します。
戻り値
条件に一致する要素の値(オプショナル型)。
一致する値が存在しない場合は、nil を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 文字列の配列 ------------------ let strs1 = ["aa","ab","ac"] // 要素に 文字"a" が含まれるか? let result1 = strs1.first(where: { $0.contains("a") }) print( result1 ) // Optional("aa") // 該当する要素が存在しない場合 let result2 = strs1.first(where: { $0.contains("bb") }) print( result2 ) // nil // 数値の配列 ------------------ let num1 = [10,20,30] // 要素の値が20以上か? let result3 = num1.first(where: { 20 <= $0 }) print( result3 ) // Optional(20) // 該当する要素が存在しない場合 let result4 = num1.first(where: { 30 < $0 }) print( result4 ) // nil |
2. firstIndex メソッドの使い方
引数
検索条件の指定方法が2つあります。
1:直接値を指定する方法。
2:クロージャーで指定する方法。
戻り値
条件に一致する要素のインデックス(オプショナル型)。
一致する値が存在しない場合は、nil を返します。
直接値を指定する方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 文字列の配列 ------------------ let strs2 = ["aa","ab","ac"] // 要素に 文字"ab" が含まれるか? let result5 = strs2.firstIndex(of: "ab") print( result5 ) // Optional(1) // 該当する要素が存在しない場合 let result6 = strs2.firstIndex(of: "bb") print( result6 ) // nil // 数値の配列 ------------------ let num2 = [10,20,30] // 要素の値が 30 か? let result7 = num2.firstIndex(of: 30) print( result7 ) // Optional(2) // 該当する要素が存在しない場合 let result8 = num1.firstIndex(of: 21) print( result8 ) // nil |
クロージャーで指定する方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 文字列の配列 ------------------ let strs2 = ["aa","ab","ac"] // 要素に 文字"c" が含まれるか? let result9 = strs2.firstIndex(where: { $0.contains("c") }) print( result9 ) // Optional(2) // 該当する要素が存在しない場合 let result10 = strs2.firstIndex(where: { $0.contains("d") }) print( result10 ) // nil // 数値の配列 ------------------ let num2 = [10,20,30] // 要素の値が 20より小さいか? let result11 = num2.firstIndex(where: { $0 < 20 }) print( result11 ) // Optional(0) // 該当する要素が存在しない場合 let result12 = num1.firstIndex(where: { 30 < $0 }) print( result12 ) // nil |