我有多个数组(最多 15 个),每个最多可以有 1800 个对象。
我需要将它们组合成一个数组,这样我就可以应用分隔符 (',') 来生成一个 csv 文件。问题是当我将它们组合成一个数组时,它必须按顺序组合,就像每个数组的第一个对象应该首先插入,然后是对象的第二个索引,然后是第三个,依此类推。
我能够通过使用 for-in 循环获得我想要的结果。然而,这不是很 swift 。我觉得可以使用 swift 中可用的函数式方法(使用 map、reduce 和 filter 函数)以更简洁的方式完成。
但是我无法将它们完美地结合起来。任何人都可以帮助我使用快速功能方法来实现结果。
P.S:如果您想让我发布 for-in 循环代码,请告诉我,但我认为这不是必需的。
最佳答案
给定 4 个(或更多)数组
let list0: [Int] = [ 1, 2, 3, 6, 7, 8, 9 ]
let list1: [Int] = [ 10, 20, 30, 40, 50, 60, 70, 80, 90]
let list2: [Int] = [ 100, 200, 300, 400, 500, 600, 700, 800, 900]
let list3: [Int] = [ 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000 ]
枚举每一个,放入另一个数组中
let lists = [
list0.enumerate().map { (index: $0, array: 0, value: $1) },
list1.enumerate().map { (index: $0, array: 1, value: $1) },
list2.enumerate().map { (index: $0, array: 2, value: $1) },
list3.enumerate().map { (index: $0, array: 3, value: $1) }
]
现在你可以写了
let sorted = lists
.flatten()
.sort { ($0.index, $0.array) < ($1.index, $1.array) }
.map { $0.value }
[1, 10, 100, 1000, 2, 20, 200, 2000, 3, 30, 300, 3000, 6, 40, 400, 4000, 7, 50, 500, 5000, 8, 60, 600, 6000, 9, 70, 700, 7000, 80, 800, 8000, 90, 900, 9000]
关于arrays - 将多个数组合并为一个,顺序索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39696381/