【问题标题】:Combine reduce and filter Swift结合减少和过滤Swift
【发布时间】:2017-02-26 12:49:48
【问题描述】:

我有 2 个代码 sn-ps:

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 语法有点挣扎,我想先结合这两个函数来制作过滤器,然后将 reduce 应用于过滤后的数组。

【问题讨论】:

  • 这里不清楚你想达到什么目的,使用reduce的目的是什么?
  • @AhmadF 只需将所有字符串组合在一起
  • 使用joined()组合字符串数组,比reduce更简单有效

标签: swift


【解决方案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 表示迭代中的当前元素。

希望对你有帮助!

【讨论】:

  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2019-10-16
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
相关资源
最近更新 更多