如何在 Swift 中连接或合并数组?
Swift 提供了两种不同的方法来连接或合并数组。
您可以使用 +(加号)运算符或 append() 方法。您还将看到其他一些方法,说明如何在 Swift 中合并多个数组。这些方法包括:
使用加号 (+) 运算符
使用 append(contentOf:) 方法
使用 flatMap() 高阶函数
使用 joined() 方法
使用 reduce() 高阶函数
方法 1:使用 + 运算符合并数组
语法
let outputArray = firstArray + secondArray
为了使用 + 运算符合并数组,它简单地作为一个二元运算符,返回一个新合并的数组。
算法
步骤 1 - 声明数组
步骤 2 - 使用 + 运算符合并两个数组
步骤 3 - 将新的合并数组存储在另一个变量中
示例
import Foundation let firstArray: [String] = ["1", "2", "3", "4", "5"] let secondArray: [String] = ["6", "7", "8", "9", "10"] let outputArray = firstArray + secondArray print("Array 1 = ",firstArray,"\nArray 2 = ",secondArray,"\nMerged Array =", outputArray)
输出
Array 1 = ["1", "2", "3", "4", "5"] Array 2 = ["6", "7", "8", "9", "10"] Merged Array ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
请注意,+(加号)运算符返回一个新创建的数组,该数组是连接的结果。
示例
请记住,+(加号)运算符负责类型安全。这意味着您不能对两种不同类型的数组执行此运算符。如果您这样做,编译器将给您一个如下所示的错误:
import Foundation let firstArray: [String] = ["1", "2", "3", "4", "5"] let secondArray: [Int] = [6, 7, 8, 9, 10] let outputArray = firstArray + secondArray print(outputArray)
输出
错误
main.swift:4:30: error: binary operator '+' cannot be applied to operands of type '[String]' and '[Int]' let outputArray = firstArray + secondArray
在上面的示例中,您试图合并字符串数组和整数数组,这是不允许的。
示例
合并两个以上数组 -
在下面的示例中,我们将把 3 个数组合并到一个数组中并打印输出 -
import Foundation let firstArray: [Int] = [1, 2, 3] let secondArray: [Int] = [4, 5, 6] let thirdArray: [Int] = [7, 8, 9] let mergedArray = firstArray + secondArray + thirdArray print(mergedArray)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
方法 2:使用 Append(contentsOf:) 方法合并数组
语法
firstArray.append(contentsOf: secondArray)
为了追加数组的内容,您必须使用目标数组调用 append(contentsOf:) 方法。
算法
在进入示例之前,您应该注意,此方法不会返回任何新数组。它将目标数组的内容追加到调用数组。
示例
import Foundation var firstArray: [String] = ["1", "2", "3", "4", "5"] let secondArray: [String] = ["6", "7", "8", "9", "10"] firstArray.append(contentsOf: secondArray) print(firstArray)
输出
["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
您可以看到 firstArray 是一个变量(而不是常量),用于追加 secondArray 的内容。
示例
您还可以使用 += 运算符连接数组,这等效于如下调用 append(contentsOf:) 方法:
import Foundation var firstArray: [String] = ["1", "2", "3", "4", "5"] let secondArray: [String] = ["6", "7", "8", "9", "10"] firstArray += secondArray
示例
合并两个以上数组 -
import Foundation var firstArray: [Int] = [1, 2, 3] let secondArray: [Int] = [4, 5, 6] let thirdArray: [Int] = [7, 8, 9] firstArray.append(contentsOf: secondArray) firstArray.append(contentsOf: thirdArray) print(firstArray)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
方法 3:使用 FlatMap() 合并数组
语法
在 Swift 中,flatMap 是 Sequence 上的一种方法,它通过应用转换函数并将其结果序列展平为单个序列来转换序列的每个元素。转换函数可以返回一个可选值,并且该方法将自动丢弃 nil 值。
let mergedArray = [firstArray, secondArray, thirdArray].flatMap({ $0 })
为了使用 flatMap() 函数,您需要传递一个组合数组的数组,该数组导致新的合并数组。
算法
以下是如何使用 flatMap 合并多个数组的示例:
步骤 1 - 初始化您的数组
步骤 2 - 将所有数组合并到一个数组中
步骤 3 - 在组合数组上调用 flatMap() 函数。
步骤 4 - 将结果数组存储在一个新变量中。
示例
import Foundation let firstArray: [Int] = [1, 2, 3] let secondArray: [Int] = [4, 5, 6] let thirdArray: [Int] = [7, 8, 9] let mergedArray = [firstArray, secondArray, thirdArray].flatMap({ $0 }) print(mergedArray)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
方法 4:使用 joined() 合并数组
语法
let flattenCollection = [firstArray, secondArray, thirdArray].joined() let mergedArray = Array(flattenCollection)
您可以对组合数组调用 join 函数,这会导致元素成为扁平集合。
现在,您需要从扁平数组创建一个新数组,以将所有元素合并到单个数组中。
算法
步骤 1 - 初始化您的数组
步骤 2 - 使用 joined() 函数连接它们
步骤 3 - 存储 joined 函数的结果
步骤 4 - 使用 Array() 将连接的数组转换为单个数组
示例
此方法返回此序列的序列的元素,连接在一起。例如,
import Foundation let firstArray: [Int] = [1, 2, 3] let secondArray: [Int] = [4, 5, 6] let thirdArray: [Int] = [7, 8, 9] let flattenCollection = [firstArray, secondArray, thirdArray].joined() let mergedArray = Array(flattenCollection) print(mergedArray)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
方法 5:使用 reduce() 合并数组
语法
此方法返回使用给定闭包组合序列元素的结果。
let flattenArray = [firstArray, secondArray, thirdArray].reduce([]) { partialResult, element in partialResult + element }
基本上,您必须将组合数组与 reduce() 函数一起传递。为了使用 reduce() 函数,您需要分配一个初始结果,即结果的初始化。
算法
步骤 1 - 初始化您的数组
步骤 2 - 将所有数组合并到单个数组中
步骤 3 - 分配初始结果
步骤 4 - 将每个元素合并到部分结果中
示例
在此代码中,我们将使用 reduce() 函数合并 3 个数组。
import Foundation let firstArray: [Int] = [1, 2, 3] let secondArray: [Int] = [4, 5, 6] let thirdArray: [Int] = [7, 8, 9] let flattenArray = [firstArray, secondArray, thirdArray].reduce([]) { partialResult, element in partialResult + element } print(flattenArray)
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9]
结论
您了解了在 Swift 中合并数组的不同方法。每种方法都可以在不同的场景中用于不同的目的。