[Swift]辞書(Dictionary)のnilの値を削除するには?

Swift

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

辞書が持つnilの値を削除する方法を紹介します。

スポンサーリンク

方法

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

辞書のnilの値を削除する方法は、2つあります。

compactMapValuesメソッド

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

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

そして、compactMapValuesメソッドのクロージャーで「$0」を返します。

let newDict = dict.compactMapValues { $0 }

compactMapValuesメソッドは、呼び出した辞書からnilの値を無くした新しい辞書を返します。

compactMapValuesメソッドは、呼び出し元の辞書に影響を与えません。

使用例

var numbers = [
    "one" : 1,
    "two" : 2,
    "three" : nil,
    "four" : 4,
    "five" : nil
]

var newNums = numbers.compactMapValues { $0 }

print(newNums) //["one": 1, "four": 4, "two": 2]

filterメソッド

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

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

そして、filterメソッドのクロージャーで「$0.value != nil」を返します。

let newDict = dict.filter{ $0.value != nil }

上記のfilterメソッドは、辞書からnilの値を無くした新しい辞書を返します。

もし、filterメソッドで返す辞書の値をオプショナルにしたくない場合は、mapValusメソッドを使います。

var newNums = numbers.filter{ $0.value != nil }.mapValues { $0! }

使用例

var numbers = [
    "one" : 1,
    "two" : 2,
    "three" : nil,
    "four" : 4,
    "five" : nil
]

var newNums = numbers.filter{ $0.value != nil }

print(newNums) //["one": 1, "four": 4, "two": 2]

まとめ

辞書のnilの値を削除する方法は、次の2つです。。

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

コメント

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