swift - 在 Swift 对象数组中收集唯一属性值的数量

标签 swift functional-programming

假设我有一个简单的 Ingredient 类:

class Ingredient {
    let section : String // 'Produce', 'Spices', 'Dairy', 'Grains'
}

我有一堆 Ingredient 元素:

var ingredients : [Ingredient] = ...

我想从这些成分中收集不同部分的数量

我可以通过(依赖于 Set 类型的自动聚集)在 Java 中做到这一点:

ingredients.stream().map(Ingredient::getSection).collect(Collectors.toSet()).count()

或者,使用 distinct() 方法:

ingredients.stream().map(Ingredient::getSection).distinct().count()

我正在寻找一种在 Swift 中执行类似单行代码的方法。我所做的一些研究表明人们编写了自己的方法来收集不同的值,但我希望有一个 distinct()Set 收集方法Swift 类型。

最佳答案

当然,您可以通过映射您的成分数组来提取部分数组,以大致相同的方式执行此操作——然后您可以将这些转换为 Set 并计算出计数,给您不同部分的数量。

let distinctSections = Set(ingredients.map{$0.section}).count

关于swift - 在 Swift 对象数组中收集唯一属性值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37643842/

相关文章:

ios - 在UITableView中隐藏边框的顶部和底部

使用函数式编程和异步的 JavaScript while 循环

functional-programming - purescript 中的 Eff-monad 是否受到 www.eff-lang.org 的启发?

ios - 在 AVPlayerViewController 中点击播放按钮时执行操作

ios - 如何在 Swift 中使用 UISplitViewController

ios - 当图像是 UITabBar 的选择时使用原始图像颜色的优雅方法

templates - 如何使用 C++ 模板传递函数及其签名(haskell 样式)?

json - 在 Swift 的 TableView 中按字母顺序显示来自 JSON 的数据

haskell - Haskell中的O(1)循环缓冲区?

Angular2 + RxJS - 无法读取未定义的下一个属性