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