【发布时间】:2019-05-12 20:41:06
【问题描述】:
我有一个包含不同类型对象的数组。在我的实际代码中,这些是符合相同协议的自定义类型,但该原则也适用于以下代码:
let anyObjectArray: [Any] = [51, "g", "hello", 1, 30111]
var sortedArray: [Any] = []
for item in anyObjectArray where item is Int {
sortedArray.append(item)
}
for item in anyObjectArray where item is String {
sortedArray.append(item)
}
print(sortedArray)
// 51, 1, 30111, "g", "hello"
如您所见,我想按项目类型对数组进行排序。
我想知道对数组进行多次迭代是否是一种合适的方法。是否有可能使用 .map 按项目类型对数组进行排序,如果是这样,效率会更高吗?
我的实际代码中的数组最多包含 4-5 个元素,有时只有一个,另一方面,不同的类型会比两个更多,因此 for in 循环的数量会更高(可能 4 -5)
【问题讨论】:
-
按类型排序的目的是什么?通过一种类型提取或循环是微不足道的,那么为什么要排序呢?排序如何让数组变得更好?
-
更好的是,这个数组真的是个好东西吗?协议数组在 Swift 中并不是一个真正有用的类型。
标签: arrays swift sorting types