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]