Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active May 7, 2016 02:33
Show Gist options
  • Save KentarouKanno/9a3e940a9a49755a9295 to your computer and use it in GitHub Desktop.
Save KentarouKanno/9a3e940a9a49755a9295 to your computer and use it in GitHub Desktop.
flatMap

flatMap

let stringArray = ["a","2","b","1","3"]

// nilを新しい配列に加えない
let intArray = stringArray.flatMap{ Int($0) }
//=> [2, 1, 3]

// .mapの場合(nilが入り、値もOptional)
let someArray = stringArray.map{ Int($0) }
//=> [nil, {Some 2}, nil, {Some 1}, {Some 3}]

// 同じ結果するには...
let someArray = stringArray.map{ Int($0) }.filter{ $0 != nil }.map{ $0! }
//=> [2, 1, 3]
// 3次元配列 => 2次元配列
var multidimensionalArray: [[[Int]]] = [[[1,2],[3,4,5]],[[6,7]],[[8],[9,10]]]
//=> [[[1, 2], [3, 4, 5]], [[6, 7]], [[8], [9, 10]]]

let array = multidimensionalArray.flatMap { $0 }
//=> [[1, 2], [3, 4, 5], [6, 7], [8], [9, 10]]

// -------------------------

// 2次元配列 => 1次元配列
var multidimensionalArray: [[Int]] = [[1,2,3],[4,5,6],[7,8,9]]
//=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

let array = multidimensionalArray.flatMap { $0 }
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment