[Swift]辞書(Dictionary)の要素を条件で検索するには?

Swift

どうも、ちょげ(@chogetarou)です。

辞書の要素を条件で検索する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

辞書の要素を条件で検索する方法は、2つあります。

firstメソッド

1つは、firstメソッドを使う方法です。

まず、辞書からfirstメソッドを呼び出します。

firstメソッドの引数「where」に、引数を2つ持つクロージャーを指定します。

そして、firstメソッドの引数「where」のクロージャーで条件式を返します。

let findValue = dict.first(where: { (key, value) in 条件式})

fitstメソッドは、条件式で最初に「true」を返した要素をタプルで返します。

firstメソッドの引数「where」のクロージャーでは、キーを「$0」、値を「$1」で省略して記述できます。

使用例

let numbers = [
    "one" : 1,
    "two" : 2,
    "three" : 3,
    "four" : 4,
    "five" : 5,
]

let findValue = numbers.first(where: { (key, value) in
    key.count > 3 && value % 2 == 0
})

print(findValue ?? "Not Found") //(key: "four", value: 4)

filterメソッド

もう1つは、filterメソッドを使う方法です。

まず、辞書からfilterメソッドを呼び出します。

そして、filterメソッドのクロージャーで検索の条件式を返します。

let findValues = dict.filter { (key, value) in 条件式 }

filterメソッドは、条件式でtrueを返した全ての要素を配列で返します。

使用例

let numbers = [
    "one" : 1,
    "two" : 2,
    "three" : 3,
    "four" : 4,
    "five" : 5,
]

let findValues = numbers.filter { (key, value) in key.count > 3 }

print(findValues) //["three": 3, "five": 5, "four": 4]

まとめ

辞書の要素を条件で検索する方法は、次の2つです。。

  • firstメソッドを使う方法
  • filterメソッドを使う方法

コメント

タイトルとURLをコピーしました