我今天使用循环获得了所需的输出,但是如何使用 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