结合使用减少和过滤Swift

时间:2017-02-26 12:49:49

标签: swift

我有2个代码段:

let names = ["Scarlet", "Stan", "Mike", "Walter", "Jessie"]

let reduceStr = names.reduce("", { x, y in

    x + y
})

print(reduceStr)


let reduceStrWithFilter = names.filter { (x) -> Bool in

    return x.characters.count > 5
}

我很快就会遇到快速语法,我希望将这两个函数组合起来先进行过滤,然后将reduce应用于过滤后的数组。

1 个答案:

答案 0 :(得分:1)

比你想象的要容易:

let names = ["Scarlet", "Stan", "Mike", "Walter", "Jessie"]

var bothReducedAndFiltered = names.filter { $0.characters.count > 5 }.reduce("", +)
print(bothReducedAndFiltered)

或者如果你真的想分开2:

var filtered =  names.filter { $0.characters.count > 5 }
var reducedAfterFilter = filtered.reduce("", +)
print(reducedAfterFilter)

或更短的解决方案:

var bothReducedAndFiltered = names.filter { $0.characters.count > 5 }.joined()

打印: ScarletWalterJessie

<强>说明:filterreduce方法中,$0表示迭代中的当前元素。

希望它有所帮助!