美文网首页
Swift中高阶函数(map、filter、reduce)

Swift中高阶函数(map、filter、reduce)

作者: ziyouzhe4 | 来源:发表于2017-05-15 10:42 被阅读76次

map : 可以对数组中的每一个元素做一次处理

如果求一个数组中字符串的长度可以用 map来处理


//方法1
let array = ["Objective-C", "HTML", "CSS"]
//定义方法 返回传入的字符串的长度
func calcuCount(string: String) -> Int {
    return string.characters.count
}
//使用  打印
print(array.map(stringCount))

// 方法2
print(fruits.map{return $0.characters.count})

reduce:可以对数组中的元素进行计算

// 将数组中的每个字符串用‘-’拼接
let array =  ["Objective-C", "HTML", "CSS"]

func appendString(string1: String, string2: String) -> String {
    return string1 == "" ? string2 : string1 + "-" + string2
}
// reduce方法中的第一个参数是初始值
print(array.reduce("第一个字符串", appendString))//打印第一个字符串-Objective-C-HTML-CSS

// $0表示计算后的结果, $1表示数组中的每一个参数
print(array.reduce("", {
    return $0 == "" ? $1 : $0 + "-" + $1
}))
//打印 Objective-C-HTML-CSS

filer:过滤,可以对数组中的元素按照某种规则进行一次过滤

let stringArray = ["MJ-C", "Swift", "Cocos2d-x", "Python", "JavaScript"]
func stringCountLess10(string: String) -> Bool {
    return string.characters.count < 10
}
stringArray.filter(stringCountLess10)

stringArray.filter({string -> Bool in
    return string.characters.count < 10
})

// $0表示数组中的每一个元素
stringArray.filter{
    return $0.characters.count < 10
}


后期会陆续更新....

flatmap 可以把数组继续 '切割'

// 用flatMap
let arrayFlatMap = arraya.flatMap { $0 }
print(arrayFlatMap)
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

相关文章

网友评论

      本文标题:Swift中高阶函数(map、filter、reduce)

      本文链接:https://www.haomeiwen.com/subject/lxocxxtx.html