展平 [Any] 数组 Swift [英] Flatten [Any] Array Swift
本文介绍了展平 [Any] 数组 Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用 this 堆栈溢出问题我有以下代码.
Using this Stack Overflow question I have the following code.
let numbers = [1,[2,3]] as [Any]
var flattened = numbers.flatMap { $0 }
print(flattened) // [1, [2, 3]]
与其将扁平化设置为 [1, [2, 3]]
我希望它是 [1, 2, 3]
.
Instead of flattened being set to [1, [2, 3]]
I want it to be [1, 2, 3]
.
在 Swift 中实现这一目标的最简单/最简洁的方法是什么?
What is the easiest/cleanest way to achieve this in Swift?
推荐答案
extension Collection where Element == Any {
var joined: [Any] { flatMap { ($0 as? [Any])?.joined ?? [$0] } }
func flatMapped<T>(_ type: T.Type? = nil) -> [T] { joined.compactMap { $0 as? T } }
}
let objects: [Any] = [1,[2,3],"a",["b",["c","d"]]]
let joined = objects.joined() // [1, 2, 3, "a", "b", "c", "d"]
let integers = objects.flatMapped(Int.self) // [1, 2, 3]
// setting the type explicitly
let integers2: [Int] = objects.flatMapped() // [1, 2, 3]
// or casting
let strings = objects.flatMapped() as [String] // ["a", "b", "c", "d"]
这篇关于展平 [Any] 数组 Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文