代码之家  ›  专栏  ›  技术社区  ›  nikksindia

如何在swift 4中获得结构的分组数组?

  •  0
  • nikksindia  · 技术社区  · 7 年前

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

    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)
    

    我期望作为输出的是一个数组,其中的元素根据相同的IngRedentid进行分组,例如。

    [
       [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)],
       ............
       .......
    ]
    

    注意:IngreditID不是固定的,我们没有单独的数组。

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Daniel T-D    7 年前

    你可以用 grouped 空气污染指数 Dictionary 将数组转换为 Carts ingredientId ;

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

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

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