小编Die*_*ach的帖子

如何使用映射和过滤器从一维数组生成二维数组?

我今天使用循环获得了所需的输出,但是如何使用 map 和 filter 将该循环与单行表达式交换?

我从一系列国家开始。从这个我使用 map 生成带有首字母的第二个数组。我现在想构建一个二维数组,其中包含使用 map 和 filter 在不同数组中具有相同首字母的所有国家,以便我可以摆脱我今天使用的循环。

let countries = ["Albania", "Algeria", "Angola", "Bahamas", "Bahrain", "Canada"]

var initials = Set(countries.map { $0.prefix(1) }).sorted()

func countriesByInitial() -> [[String]] {
    var result = [[String]]()
    for initial in initials {
        result.append(countries.filter { $0.prefix(1) == initial })
    }
    return result
}
Run Code Online (Sandbox Code Playgroud)

arrays multidimensional-array higher-order-functions ios swift

3
推荐指数
1
解决办法
733
查看次数