1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| // 面试题:用数组的 reduce 方法实现 map 的功能。 let arr = [1, 3, 2] // map简易实现 let res = arr.map({$0*2})
// Array.reduce(< // 输出数据类型与初始化占位数据类型(initial)一致 let res2 = arr.reduce([]) { (a: [Int], element: Int) -> [Int] in var t = Array(a) t.append(element * 2) return t }
// 面试题:用 reduce 方法一次求出数组中奇数的和、以及偶数乘积 // 使用元组,注意占位数据(0, 1),第一联合数据a :(Int, Int),函数输出数据(Int, Int) 三者类型一致
let arr2 = [1, 3, 2, 4]
let res3: (Int, Int) = arr2.reduce((0, 1)) { (a :(Int, Int), element: Int) -> (Int, Int) in if element % 2 == 0 { return (a.0, a.1 * element) } else { return (a.0 + element, a.1) } }
|