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([], +) 函数返回一个扁平化的数组。

结论

使用以上方法,您可以轻松地将多维数组展平为一维数组。以上所有方法都适用于任何类型的数组,例如浮点数、整数、字符串等。

更新于: 2023-07-19

432 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告