Swift 程序获取扁平化的一维数组
Swift 提供了多种函数,例如 flatmap()、compactmap() 和 reduce(),用于扁平化一维数组。
数组用于按顺序存储相同数据类型的元素,而集合用于存储相同数据类型的不同元素,且这些元素没有明确的顺序。
方法 1:使用 flatmap() 函数
要将二维数组扁平化为一维数组,我们可以使用 flatmap() 函数。 flatmap() 函数通过将子数组连接成单个数组来返回一个数组。
语法
func flatMap{_res}
这里,res 是一个闭包,它接受指定数组的元素作为参数,并返回一个扁平化的数组。
示例
以下 Swift 程序使用 flatmap() 函数获取扁平化的一维数组
import Foundation
import Glibc
// 打印展平数组的函数
func fArray(arr: [[Int]]) -> [Int] {
return arr.flatMap { $0 }
}
let mArray = [[23, 21, 13], [1, 1, 10], [89, 81, 19]]
let outputArray = fArray(arr: mArray)
print("原始数组:", mArray)
print("展平数组:", outputArray)
输出
原始数组:[[23, 21, 13], [1, 1, 10], [89, 81, 19]] 展平数组:[23, 21, 13, 1, 1, 10, 89, 81, 19]
上面的代码中,我们有一个二维数组。现在我们创建一个 fArray() 函数,该函数以二维数组作为输入,并使用 flatMap{$0} 函数返回一个展平后的数组。
方法 2:使用 compactMap() 函数
我们也可以使用 compactMap() 函数将二维数组展平为一维数组。 compactMap() 函数接受指定的数组元素作为参数,然后对其进行转换,并将结果返回为非 nil 数组。
语法
func compactMap{_transform}
此处,transform 是一个闭包,它接受指定数组的元素作为参数,并返回一个可选值。
示例
以下 Swift 程序使用 contactMap() 函数获取扁平化的一维数组
import Foundation
import Glibc
// 打印展平数组的函数
func FlatArray(arr: [[Int]]) -> [Int] {
return arr.compactMap{$0}.reduce([], +)
}
let mArray = [[3, 20, 13], [11, 12, 10], [9, 81, 1]]
let outputArray = FlatArray(arr: mArray)
print("原始数组:", mArray)
print("平化数组:", outputArray)
输出
原始数组:[[3, 20, 13], [11, 12, 10], [9, 81, 1]] 平化数组:[3, 20, 13, 11, 12, 10, 9, 81, 1]
上面的代码中,我们有一个二维数组。现在我们创建一个 FlatArray() 函数,该函数以二维数组作为输入,并使用 compactMap{$0}.reduce([], +) 函数返回一个扁平化的数组。
方法 3:使用用户定义函数
我们也可以创建一个用户定义函数,将二维数组扁平化为一维数组。在此函数中,我们运行一个嵌套的 for 循环来遍历二维数组的每个元素,然后将该元素附加到一维数组中。
示例
以下 Swift 程序使用用户定义函数获取扁平化的一维数组。
import Foundation
import Glibc
// 打印展平数组的函数
func myArray(arr: [[Int]]) -> [Int] {
var resultantArray: [Int] = []
for subArr in arr {
for ele in subArr {
resultantArray.append(ele)
}
}
return resultantArray
}
let mArray = [[3, 20, 13, 1, 11], [51, 12, 10, 3, 33]]
let outputArray = myArray(arr: mArray)
print("原始数组:", mArray)
print("展平数组:", outputArray)
输出
原始数组:[[3, 20, 13, 1, 11], [51, 12, 10, 3, 33]] 展平数组:[3, 20, 13, 1, 11, 51, 12, 10, 3, 33]
上面的代码中,我们有一个二维数组。现在我们创建一个名为 myArray() 的函数来展平这个一维数组。此函数接受一个数组作为参数,然后创建一个一维数组来存储结果,然后运行嵌套的 for 循环遍历给定二维数组的每个元素,并将每个元素存储在结果数组中。
方法 4:使用 reduce() 函数
要将二维数组展平为一维数组,我们可以使用 reduce() 函数。reduce() 函数用于根据给定的闭包合并数组元素。
语法
func reduce{_initialRes, _nextRes}
其中,initialRes 用于存储初始累加值,该值在闭包首次执行时会传递给 nextRes。 nextRes 是一个闭包,用于将累加值和序列元素组合成一个新的累加值,该值将在 nextRes 闭包的下一次调用中进一步使用。
示例
以下 Swift 程序借助 reduce() 函数获取扁平化的一维数组。
import Foundation
import Glibc
// 打印展平数组的函数
func FArray(arr: [[Int]]) -> [Int] {
return arr.reduce([], +)
}
let mArray = [[3, 20, 13, 1], [11, 12, 10, 3], [9, 81, 1, 3], [2, 33, 1, 22]]
let outputArray = FArray(arr: mArray)
print("原始数组:", mArray)
print("平化数组:", outputArray)
输出
原始数组:[[3, 20, 13, 1], [11, 12, 10, 3], [9, 81, 1, 3], [2, 33, 1, 22]] 平化数组:[3, 20, 13, 1, 11, 12, 10, 3, 9, 81, 1, 3, 2, 33, 1, 22]
上面的代码中,我们有一个多维数组。现在我们创建一个 FArray() 函数,该函数以多维数组作为输入,并使用 reduce([], +) 函数返回一个扁平化的数组。
结论
使用上述方法,您可以轻松地将多维数组扁平化为一维数组。所有上述方法均适用于任何类型的数组,例如浮点型、整型、字符串等。