合并还原和过滤Swift

合并还原和过滤Swift,swift,Swift,我有两个代码片段: 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 } 我对

我有两个代码片段:

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
}

我对swift语法有点纠结,我想先将这两个函数结合起来生成filter,然后将reduce应用于filtered array。

这比你想象的要简单:

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()
此打印:
ScarletterJessie

说明:
filter
reduce
方法中,
$0
表示迭代中的当前元素


希望有帮助

现在还不清楚你想在这里实现什么,使用reduce的目的是什么?@AhmadF只需在oneUse中组合所有字符串
joined()
即可组合一个字符串数组,这比
reduce
更简单、更有效,很高兴我能提供帮助!