Skip to content

Instantly share code, notes, and snippets.

@Harryyan
Created June 14, 2017 22:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Harryyan/8128b460af8f645762991f1a1e059ff5 to your computer and use it in GitHub Desktop.
Save Harryyan/8128b460af8f645762991f1a1e059ff5 to your computer and use it in GitHub Desktop.
Swift flatmap, map, filter, reduce prractice
//: Playground - noun: a place where people can play
import UIKit
// Map
let fruits0 = ["apple", "banana", "orange", ""]
let counts0 = fruits0.map { fruit0 -> Int? in
let length = fruit0.characters.count
guard length > 0 else {
return nil
}
return length
}
// [Optional(5), Optional(6), Optional(6), nil]
print(counts0)
// FlatMap use
let fruits = ["apple", "banana", "orange", ""]
let counts = fruits.flatMap { fruit -> Int? in
let length = fruit.characters.count
guard length > 0 else {
return nil
}
return length
}
// [5,6,6]
print(counts)
let array = [[1,2,3], [4,5,6], [7,8,9]]
// Map
let arrayMap = array.map { $0 }
// [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(arrayMap)
// flatMap
let arrayFlatMap = array.flatMap { $0 }
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arrayFlatMap)
// Filter
let numbers = [1,2,3,4,5,6]
let evens = numbers.filter { $0 % 2 == 0 }
// [2, 4, 6]
print(evens)
// Reduce
let numbers1 = [1,2,3,4,5]
// reduce first parameter is initial value
let sum = numbers1.reduce(0) { $0 + $1 }
let sum1 = numbers1.reduce(0) { total, num in
return total + num
}
// 15
print(sum)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment