Swift程序 获取扁平化一维数组
Swift有各种函数,如flatmap(), compactmap(), reduce(),可以将一维数组扁平化。
数组用于按顺序存储相同数据类型的元素,而集合则用于存储相同数据类型的不同元素,没有任何明确的顺序。
方法1:使用flatmap()函数
为了将二维数组扁平化为一维数组,我们可以使用flatmap()函数。flatmap()函数通过将子数组串联成一个数组来返回一个数组。
语法
func flatMap{_res}
这里,res是一个闭包,它接受指定数组的元素作为其参数,并返回一个扁平化的数组。
例子
以下是使用flatmap()函数获得扁平化的一维数组的Swift程序
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([], +)函数返回一个扁平化的数组。
总结
使用上述方法,你可以很容易地将多维数组扁平化为一维数组。上述所有的方法可以适用于任何类型的数组,如浮点、英数、字符串等。