0
0
Swiftprogramming~5 mins

Map, filter, reduce patterns in Swift

Choose your learning style9 modes available
Introduction

Map, filter, and reduce help you work with lists of data easily. They let you change, pick, or combine items without writing loops.

You want to change every item in a list, like doubling numbers.
You want to keep only some items, like all even numbers.
You want to combine all items into one value, like adding all numbers.
Syntax
Swift
let newArray = oldArray.map { item in
    // change item and return new item
}

let filteredArray = oldArray.filter { item in
    // return true to keep item, false to skip
}

let result = oldArray.reduce(initialValue) { partialResult, item in
    // combine partialResult and item, return new partialResult
}

Use map to transform each item.

Use filter to select items that match a condition.

Use reduce to combine all items into one value.

Examples
This doubles each number in the list.
Swift
let numbers = [1, 2, 3]
let doubled = numbers.map { $0 * 2 }
This keeps only even numbers.
Swift
let numbers = [1, 2, 3, 4]
let evens = numbers.filter { $0 % 2 == 0 }
This adds all numbers together, starting from 0.
Swift
let numbers = [1, 2, 3, 4]
let sum = numbers.reduce(0) { $0 + $1 }
Sample Program

This program shows how to use map, filter, and reduce on a list of numbers. It doubles numbers, filters numbers greater than 3, and sums all numbers.

Swift
import Foundation

let numbers = [1, 2, 3, 4, 5]

// Double each number
let doubled = numbers.map { $0 * 2 }
print("Doubled: \(doubled)")

// Keep only numbers greater than 3
let filtered = numbers.filter { $0 > 3 }
print("Filtered (>3): \(filtered)")

// Sum all numbers
let sum = numbers.reduce(0) { $0 + $1 }
print("Sum: \(sum)")
OutputSuccess
Important Notes

You can use shorthand like $0 for the first parameter in closures.

Map, filter, and reduce do not change the original list; they create new results.

Reduce needs a starting value to begin combining items.

Summary

Map changes each item in a list.

Filter picks items that match a rule.

Reduce combines all items into one value.