【Swift】インデックス付きでmap, reduce, filterを使ってみる


Swift 3.0

使いどころがあるかは分かりませんが実験的に。
参考: Swiftでのenumerateの使い方

map


let array = [1, 2, 3, 4]
let m = array.enumerated().map { "\($0.0): \($0.1)" } // インデックスと要素のペア
print(m)
// ["0: 1", "1: 2", "2: 3", "3: 4"]

reduce


let array = [1, 2, 3, 4]
let r = array.enumerated().reduce(0) { $0 + $1.0 * $1.1 } // インデックスと要素の積の総和
print(r)
// 20 <- 0*1 + 1*2 + 2*3 + 3*4

filter


let array = [1, 2, 3, 4]
let f = array.enumerated().filter { $0.0 * $0.1 > 3 }.map { $0.1 } // インデックスと要素の積が3より大きいもの
print(f)
// [3, 4]

最後に

enumerateでの値の受け取り方についての詳しい実験は別の記事にしたいと思います。

【Swift】enumerateを使ったときの値の受け取り方

追記: 記事にしました。