将多个数组合并为一个,按顺序索引

Ram*_*sad 3 arrays functional-programming swift

我有多个数组(最多15个),每个最多可以有1800个对象.

我需要将它们组合成一个数组,这样我就可以应用一个分隔符(',')来生成一个csv文件.问题是当我将它们组合成一个单独的数组时,它必须按顺序组合,就像每个数组的第一个对象应该先插入,然后是第二个对象索引,然后是第三个,依此类推.

我可以通过使用for-in循环来实现我想要的结果.然而,这并不十分乐观.我觉得可以使用swift中提供的功能方法(使用map,reduce和filter函数)以更清晰的方式完成.

但是我无法将它们完美地结合起来.任何人都可以帮助我使用快速的功能方法来实现结果.

PS:如果您希望我发布for-in循环代码,请告诉我,但我认为这不是必需的.

Luc*_*tti 5

给定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 ]
Run Code Online (Sandbox Code Playgroud)

枚举每一个并将它们放入另一个数组中

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) }
]
Run Code Online (Sandbox Code Playgroud)

现在你可以写了

let sorted = lists
    .flatten()
    .sort { ($0.index, $0.array) < ($1.index, $1.array) }
    .map { $0.value }
Run Code Online (Sandbox Code Playgroud)

[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]