Generic Instance Method

flatMap(_:)

Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.

Declaration

func flatMap<ElementOfResult>(_ transform: (Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]

Parameters

transform

A closure that accepts an element of this sequence as its argument and returns an optional value.

Return Value

An array of the non-nil results of calling transform with each element of the sequence.

Discussion

Use this method to receive an array of nonoptional values when your transformation produces an optional value.

In this example, note the difference in the result of using map and flatMap with a transformation that returns an optional Int value.

let possibleNumbers = ["1", "2", "three", "///4///", "5"]

let mapped: [Int?] = possibleNumbers.map { str in Int(str) }
// [1, 2, nil, nil, 5]

let flatMapped: [Int] = possibleNumbers.flatMap { str in Int(str) }
// [1, 2, 5]

Complexity: O(m + n), where m is the length of this sequence and n is the length of the result.

See Also

Transforming a Sequence

func compactMap<ElementOfResult>((Self.Element) -> ElementOfResult?) -> [ElementOfResult]

Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.

func flatMap<SegmentOfResult>((Self.Element) -> SegmentOfResult) -> [SegmentOfResult.Element]

Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.

func reduce<Result>(Result, (Result, Self.Element) -> Result) -> Result

Returns the result of combining the elements of the sequence using the given closure.

var lazy: LazySequence<Self>

A sequence containing the same elements as this sequence, but on which some operations, such as map and filter, are implemented lazily.