假设我有一个简单的 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/