【问题标题】:Nested Higher Order Functions嵌套的高阶函数
【发布时间】:2019-05-15 06:39:42
【问题描述】:

我正在努力使用 map 和 filter 设置一个高阶函数来创建一个包含数组的数组。我现在一直在为每个循环使用艰难的方式。 肯定有更好的办法。希望有人可以提供帮助。

我知道datasource.map{$0.category} 之类的简单事情,但正在努力走得更远。

var categoryDatasource: [[Kreisel]] = [[Kreisel]]()

    // METHODS
    convenience init(datasource: [Kreisel]) {
        self.init()
        var categories = [String: [Kreisel]]()
        for kreisel in datasource {
            if var val = categories[kreisel.category] {
                val.append(kreisel)
                categories[kreisel.category] = val
            } else {
                categories[kreisel.category] = [kreisel]
            }
        }
        categories.forEach { (key, value) in
            categoryDatasource.append(value)
        }
    }

【问题讨论】:

    标签: swift higher-order-functions


    【解决方案1】:

    您可以使用Dictionary 构造函数init(grouping:by:) 通过基于给定属性category 进行分组从数组创建dictionary。然后你可以像这样得到dictioary 的值作为array

    categoryDatasource = Array(Dictionary(grouping: datasource) { $0.category }.values)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      相关资源
      最近更新 更多