gpt4 book ai didi

ios - 展平任意数组

转载 作者:行者123 更新时间:2023-11-29 00:10:01 25 4
gpt4 key购买 nike

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

最佳答案

像 Ray Toal 建议的那样(来自 https://rosettacode.org/wiki/Flatten_a_list#Swift)

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
}

这个函数的作用如下,它遍历数组中的每个元素,如果它在你的情况下找到 Int ,它会将其添加到结果中,如果它找到 [Any] 数组,它会调用自身(递归调用)并重复该过程,直到每个案例都到达最内层的 Int。最后返回结果。注意 asset 如果你的数组不是 IntInt 数组([Int])

然后你可以这样做:

var array:[Any] = [1, 2, [4, 3], [9, [8, 0]]]
array = flatten(array)
//result [1, 2, 4, 3, 9, 8, 0]

关于ios - 展平任意数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com