【发布时间】:2018-10-08 13:16:14
【问题描述】:
我今天使用循环获得了所需的输出,但是如何使用 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
}
【问题讨论】:
-
发布您的代码,而不是屏幕截图...
-
复制/粘贴代码,而不是截图。
-
这是一个真实世界的示例,说明为什么您应该真正发布代码而不是图像:除了我需要复制/粘贴您的代码之外,由于某种原因,我连接到一个可以访问的网络到 i.stack.imgur.com 图像被阻止!因此我什至无法查看代码。
-
好的,我现在已经发布了代码。
-
你的数组总是排序的吗?
标签: ios arrays swift multidimensional-array higher-order-functions