ios - 如何在 swift 4 中获取结构的分组数组?

标签 ios multidimensional-array swift4 higher-order-functions

我有一个结构数组,其中两个或多个元素的 ingredientId 可以相同。其代码如下:

struct Cart {
    var bundleId: Int = 0
    var ingredientId: Int = 0
}

var array:[Cart] = []
array.append(Cart(bundleId: 1, ingredientId: 1))
array.append(Cart(bundleId: 2, ingredientId: 2))
array.append(Cart(bundleId: 3, ingredientId: 2))
array.append(Cart(bundleId: 4, ingredientId: 5))
array.append(Cart(bundleId: 5, ingredientId: 5))
array.append(Cart(bundleId: 6, ingredientId: 6))
print(array)

我期望的输出是一个数组,其中的元素根据相同的 ingredientId 分组,例如

[
   [Cart(bundleId: 1, ingredientId: 1)],
   [Cart(bundleId: 2, ingredientId: 2),Cart(bundleId: 3, ingredientId: 2)],
   [Cart(bundleId: 4, ingredientId: 5),Cart(bundleId: 5, ingredientId: 5)],
   [Cart(bundleId: 6, ingredientId: 6)],
   ............
   .......
]

附注:成分 ID 不固定,我们没有单独的数组。

如何使用高阶函数实现这一点?

最佳答案

您可以使用 Dictionary 公开的 grouped API 将数组转换为按 ingredientId 分组的 Carts 字典;

let groupedDictionary = Dictionary(grouping: array) { $0.ingredientId }

如果您随后需要将该字典转换为数组;

let twoDimensionalArray = groupedDictionary.map { $0.value }

关于ios - 如何在 swift 4 中获取结构的分组数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53762457/

相关文章:

ios - Swift 中的 UIWebView 离线错误

Java:在不指定数组大小的情况下声明多维数组(例如,new int[10][])

json - Swift 4 可编码 : the keys are Int array in JSON data

objective-c - 更改 MKAnnotationView 自定义图像?

ios - Swift 如何从源自 lib 的字符串创建类实例

ios - 使用自动布局约束以编程方式创建四个具有相同高度和宽度的 UIView

multidimensional-array - Typescript - 多维数组初始化

javascript - 用数组动态填充多维数组

swift - 在泛型函数 where 子句中使用 Self 时出错

ios - 如何使用 SwiftyJSON 显示 API 图像