Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Swift辞典

  1. トップページ
  2. Swift辞典
  3. 配列.contains() / firstIndex() / lastIndex()

配列.contains() / firstIndex() / lastIndex()

配列内に特定の要素が含まれるかを調べたり、要素のインデックスを検索するメソッドです。

構文
// 要素が含まれるかを調べます。
配列.contains(要素)

// 条件を満たす要素が含まれるかを調べます。
配列.contains(where: { 条件 })

// 条件を最初に満たすインデックスを返します。
配列.firstIndex(of: 要素)
配列.firstIndex(where: { 条件 })

// 条件を最後に満たすインデックスを返します。
配列.lastIndex(of: 要素)
配列.lastIndex(where: { 条件 })
メソッド一覧
メソッド戻り値概要
contains(_ element:)Bool指定した要素が配列に含まれるかを返します。
contains(where:)Boolクロージャの条件を満たす要素が含まれるかを返します。
firstIndex(of:)Int?指定した要素が最初に見つかるインデックスを返します。見つからない場合は『nil』です。
firstIndex(where:)Int?条件を最初に満たす要素のインデックスを返します。
lastIndex(of:)Int?指定した要素が最後に見つかるインデックスを返します。
lastIndex(where:)Int?条件を最後に満たす要素のインデックスを返します。
サンプルコード
let scores = [78, 92, 55, 92, 61, 88]

// 要素が含まれるかを確認します。
print(scores.contains(92))      // true
print(scores.contains(100))     // false

// 条件を満たす要素が含まれるかを確認します。
print(scores.contains(where: { $0 >= 90 })) // true(90以上の要素が存在)

// 最初に一致するインデックスを検索します。戻り値はオプショナルです。
if let index = scores.firstIndex(of: 92) {
    print(index) // 1(最初に92が現れるインデックス)
}

// 最後に一致するインデックスを検索します。
if let lastIdx = scores.lastIndex(of: 92) {
    print(lastIdx) // 3(最後に92が現れるインデックス)
}

// 条件を最初に満たすインデックスを検索します。
if let failIdx = scores.firstIndex(where: { $0 < 60 }) {
    print(failIdx)         // 2(55が最初に現れるインデックス)
    print(scores[failIdx]) // 55
}
概要

『contains()』は要素の存在確認に使い、戻り値は『Bool』です。要素が『Equatable』に準拠していれば引数に直接値を渡せます。複雑な条件で検索したい場合は『where:』付きのバリアントを使います。

『firstIndex(of:)』と『lastIndex(of:)』の戻り値は『Int?』(オプショナル)です。要素が見つからない場合は『nil』を返すため、戻り値は必ずオプショナルバインディング(if let)で安全に取り出してください。

配列への要素の追加・削除は『append() / insert() / remove()』、抽出・ソートは『filter() / sorted()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。