映射具有特定格式的Swift数组

Zig*_*ong 4 arrays swift

给定一个包含如下元素的数组:

let array = [[a], [b, c], [d, e, f]]
Run Code Online (Sandbox Code Playgroud)

是否有一种优雅的方法将此数组转换为一个数组,该数组返回一个具有外部数组索引的元组:

let result = [(a, 0), (b, 1), (c, 1), (d, 2), (e, 2), (f, 2)]
Run Code Online (Sandbox Code Playgroud)

Ole*_*ann 9

let array = [["a"], ["b", "c"], ["d", "e", "f"]]
let result = zip(array, array.indices).flatMap { subarray, index in
    subarray.map { ($0, index) }
}
Run Code Online (Sandbox Code Playgroud)

result 是:

[("a", 0), ("b", 1), ("c", 1), ("d", 2), ("e", 2), ("f", 2)]
Run Code Online (Sandbox Code Playgroud)

我用zip(array, array.indices)而不是array.enumerated()因为你特意要求一个带有数组索引的enumerated()元组- 产生具有从零开始的整数偏移的元组.如果您的源集合是一个数组,它没有什么区别,但其他集合(如ArraySlice)会表现不同.