美文网首页
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