---
title: "flatMap(_:)"
framework: swift
role: symbol
role_heading: Instance Method
path: "swift/set/flatmap(_:)-i3my"
---

# flatMap(_:)

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

## Declaration

```swift
func flatMap<SegmentOfResult>(_ transform: (Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element] where SegmentOfResult : Sequence
```

## Parameters

- `transform`: A closure that accepts an element of this sequence as its argument and returns a sequence or collection.

## Return Value

Return Value The resulting flattened array.

## Discussion

Discussion Use this method to receive a single-level collection when your transformation produces a sequence or collection for each element. In this example, note the difference in the result of using map and flatMap with a transformation that returns an array. let numbers = [1, 2, 3, 4]

let mapped = numbers.map { Array(repeating: $0, count: $0) } // [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

let flatMapped = numbers.flatMap { Array(repeating: $0, count: $0) } // [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] In fact, s.flatMap(transform)  is equivalent to Array(s.map(transform).joined()). note: O(m + n), where n is the length of this sequence and m is the length of the result.

## See Also

### Transforming a Set

- [compactMap(_:)](swift/set/compactmap(_:).md)
- [flatMap(_:)](swift/set/flatmap(_:)-6chuh.md)
- [reduce(_:_:)](swift/set/reduce(_:_:).md)
- [reduce(into:_:)](swift/set/reduce(into:_:).md)
- [sorted()](swift/set/sorted().md)
- [sorted(by:)](swift/set/sorted(by:).md)
- [shuffled()](swift/set/shuffled().md)
- [shuffled(using:)](swift/set/shuffled(using:).md)
- [lazy](swift/set/lazy.md)
