给定一个包含如下元素的数组:
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)
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)会表现不同.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |