Swift 程序获取扁平化的一维数组
Swift 具有各种函数,如 flatmap()、compactmap()、reduce(),用于将一维数组展平。
数组用于按顺序存储相同数据类型的元素,而集合用于存储相同数据类型的不同元素,且没有任何确定顺序。
方法 1:使用 flatmap() 函数
为了将二维数组展平为一维数组,我们可以使用 flatmap() 函数。flatmap() 函数通过将子数组连接到单个数组中来返回一个数组。
语法
func flatMap{_res}
这里,res 是一个闭包,它接受指定数组的元素作为其参数,并返回一个扁平化的数组。
示例
以下 Swift 程序使用 flatmap() 函数获取扁平化的一维数组
import Foundation import Glibc // Function to print the flatten array 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("Original Array:", mArray) print("Flattened Array:", outputArray)
输出
Original Array: [[23, 21, 13], [1, 1, 10], [89, 81, 19]] Flattened Array: [23, 21, 13, 1, 1, 10, 89, 81, 19]
在上面的代码中,我们有一个二维数组。现在我们创建一个 fArray() 函数,它接受二维数组作为输入,并使用 flatMap{$0} 函数返回一个扁平化的数组。
方法 2:使用 compactMap() 函数
我们还可以使用 compactMap() 函数将二维数组展平为一维数组。compactMap() 函数接受指定的数组元素作为参数,然后转换它们,并在一个非空数组中返回结果。
语法
func compactMap{_transform}
这里,transform 是一个闭包,它接受指定数组的元素作为其参数,并返回一个可选值。
示例
以下 Swift 程序使用 contactMap() 函数获取扁平化的一维数组
import Foundation import Glibc // Function to print the flatten array 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("Original Array:", mArray) print("Flattened Array:", outputArray)
输出
Original Array: [[3, 20, 13], [11, 12, 10], [9, 81, 1]] Flattened Array: [3, 20, 13, 11, 12, 10, 9, 81, 1]
在上面的代码中,我们有一个二维数组。现在我们创建一个 FlatArray() 函数,它接受二维数组作为输入,并使用 compactMap{$0}.reduce([], +) 函数返回一个扁平化的数组。
方法 3:使用用户定义函数
我们还可以创建一个用户定义函数来将二维数组展平为一维数组。在这个函数中,我们运行一个嵌套的 for 循环来遍历二维数组的每个元素,然后将元素追加到一维数组中。
示例
以下 Swift 程序使用用户定义函数获取扁平化的一维数组。
import Foundation import Glibc // Function to print the flatten array 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("Original Array:", mArray) print("Flattened Array:", outputArray)
输出
Original Array: [[3, 20, 13, 1, 11], [51, 12, 10, 3, 33]] Flattened Array: [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 // Function to print the flatten array 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("Original Array:", mArray) print("Flattened Array:", outputArray)
输出
Original Array: [[3, 20, 13, 1], [11, 12, 10, 3], [9, 81, 1, 3], [2, 33, 1, 22]] Flattened Array: [3, 20, 13, 1, 11, 12, 10, 3, 9, 81, 1, 3, 2, 33, 1, 22]
在上面的代码中,我们有一个多维数组。现在我们创建一个 FArray() 函数,它接受多维数组作为输入,并使用 reduce([], +) 函数返回一个扁平化的数组。
结论
使用以上方法,您可以轻松地将多维数组展平为一维数组。以上所有方法都适用于任何类型的数组,例如浮点数、整数、字符串等。