Ios 展平任意

Ios 展平任意,ios,arrays,join,swift4,flatmap,Ios,Arrays,Join,Swift4,Flatmap,如何展平Swift 4中的任意数组示例: 假设我有一个数组:var数组:[Any]=[1,2,4,3],[9,8,0]]在展平这个数组之后,我的预期结果是[1,2,4,3,9,8,0]。我尝试使用flatMap,但它不起作用。尝试使用数组的reduce和joined函数 var array:[Any] = [1, 2, [4, 3], [9, [8, 0]]] var flatArray = array.reduce([],+] else var flatArray = Ar

如何展平
Swift 4
中的任意数组示例:
假设我有一个数组:
var数组:[Any]=[1,2,4,3],[9,8,0]]
在展平这个数组之后,我的预期结果是
[1,2,4,3,9,8,0]
。我尝试使用
flatMap
,但它不起作用。

尝试使用数组的reduce和joined函数

var array:[Any] = [1, 2, [4, 3], [9, [8, 0]]]

   var flatArray = array.reduce([],+]

else 

   var flatArray = Array(array.joined())
就像雷·托尔建议的那样


用谷歌搜索一下@谢谢,这个链接非常有用。但是你能和我分享一下通过谷歌搜索得到这个结果的
关键词吗。我只是试了一下,但没有得到同样的结果。只是想提高我的搜索技能:)。非常感谢,我刚刚认识到这个操作是“展平的”(45年的编程经验),而你在数组中的数组中展平数组的事实是“递归的”,所以我在谷歌上搜索了“递归的快速展平列表”,非常感谢分享。这两个都不适合我。我在
reduce
中得到错误:
对成员“+”的不明确引用
已加入时
我得到了对成员“已加入()”的不明确引用的错误
不明确引用
。我使用
Xcode9.1 beta2游戏场
func flatten<T>(_ s: [Any]) -> [T] {
    var r = [T]()
    for e in s {
        switch e {
        case let a as [Any]:
            r += flatten(a)
        case let x as T:
            r.append(x)
        default:
            assert(false, "value of wrong type")
        }
    }
    return r
}
var array:[Any] = [1, 2, [4, 3], [9, [8, 0]]]
array = flatten(array)
//result [1, 2, 4, 3, 9, 8, 0]