本記事では、Swiftのflatmapについて調べたことをまとめていきます。
環境: Swift4.2
flatmapは何ができるのか
swiftのflatmapは多重配列(配列に配列が入っているもの)を配列に変換することができます。どういうことかと言うと、
1 2 3 4 5 |
var multipleArray = [[1,2],[3,4],[5,6]] var simpleArray = multipleArray.flatMap({ $0 }) print(simpleArray) // [1, 2, 3, 4, 5, 6] |
変数multipleArrayを、flatmapメソッドで、シンプルな配列に変換しています。
mapメソッドと組み合わせることも可能です。
下の例では、
①多重配列multipleArrayをシンプルな配列に変換する ②変換後の配列の各要素の数字を2倍にしています。
1 2 3 4 5 6 |
var multipleArray = [[1,2],[3,4],[5,6]] var simpleArray = multipleArray.flatMap({ $0.map { number in return number * 2 } }) print(simpleArray) //[2, 4, 6, 8, 10, 12] |
Swift4.1からflatmapは非推奨
上で紹介したようにflatmapですが、Swift4.1以降では非推奨(まだ使用することはできる)になりました。
新しくSwiftではcompactMapが推奨されています。
Swift4.1以降の推奨はcompactMap
compactMapは基本的にflatMapと同じ使い方が可能です。
compactMap
1 2 3 4 |
let numbers = ["5", "42", "test", "22"] let intNumbers = numbers.compactMap({ Int($0) }) print(intNumbers) //[5, 42, 100] |
flatMap
1 2 3 4 |
let numbers = ["5", "42", "test", "22"] let intNumbers = numbers.flatMap({ Int($0) }) print(intNumbers) //[5, 42, 22] |
compactMapとflatMapの違いについては、[Swift4.1] compactMap(_:)メソッドの導入経緯のご紹介
この記事が分かりやすいです。
以上です。
“安定した”フリーランスになって年収アップしませんか?
参考;
https://qiita.com/ysn551/items/7cb4fbb67a0640774d2c