Arrays Swift 3对数组中的大量数据进行排序

Arrays Swift 3对数组中的大量数据进行排序,arrays,swift,for-loop,stride,Arrays,Swift,For Loop,Stride,我有一个包含大量数据的字符串数组,其中只有一些是我想要的。我使用一个分隔符来分隔好的数据,如: var result = contentArray[1].components(separatedBy: ",") 这就给我留下了结果数组偶数索引中的垃圾数据,以及奇数索引中的好数据 现在我只想用好的数据来简化以后的工作。我可以通过创建另一个数组,使用for in循环和stride 但这似乎至少是额外的一步。有没有一种方法可以在不创建两个数组的情况下对第一个数组中的数据进行排序?这将使应用程序创建3

我有一个包含大量数据的字符串数组,其中只有一些是我想要的。我使用一个分隔符来分隔好的数据,如:

var result = contentArray[1].components(separatedBy: ",")
这就给我留下了结果数组偶数索引中的垃圾数据,以及奇数索引中的好数据

现在我只想用好的数据来简化以后的工作。我可以通过创建另一个数组,使用for in循环和stride

但这似乎至少是额外的一步。有没有一种方法可以在不创建两个数组的情况下对第一个数组中的数据进行排序?这将使应用程序创建3个阵列,其中包含大量数据,而我似乎可以在1或2分钟内完成。我计划用至少20个数据集来完成这项工作,这样内存中似乎有很多额外的数组

您可以这样做

let filterArray = result.indices.flatMap { $0 % 2 != 0 ? nil : result[$0] }
print(filterArray)
var result = contentArray[1].components(separatedBy: ",")
result = result.indices.flatMap { $0 % 2 != 0 ? nil : result[$0] }
print(result)
编辑:若你们想将过滤器的输出存储在同一个数组中,可以这样做

let filterArray = result.indices.flatMap { $0 % 2 != 0 ? nil : result[$0] }
print(filterArray)
var result = contentArray[1].components(separatedBy: ",")
result = result.indices.flatMap { $0 % 2 != 0 ? nil : result[$0] }
print(result)

为什么过早优化?我的建议是首先让它工作起来,运行一些性能测试,并仅在需要时进行优化。@nathan说得好。我很早就有点烦躁。为什么我不需要做额外的工作呢?请记住,大多数基本Swift类型都是复制变异的。如果你不改变实际数据,你很可能只是做额外的引用,占用的空间很小,而不是复制所有的数据。这不就是我想要避免的创建第三个数组吗?谢谢,看起来很棒。我不熟悉flatMap语法,编译器正在使用指向:array[$0]@Frogomad的未解析标识符数组。实际上,您需要填充结果数组,因此只需使用var声明它,而不是让我们检查编辑的应答,就可以使其变为可修改的。我明白了,非常感谢。我现在查看教程,看看在创建第一个数组时是否可以这样做,所以我总共只创建一个数组