当前位置: 首页 > 知识库问答 >
问题:

如何在Swift中连接或合并数组?

李文轩
2023-03-14

如果有两个数组在swift中创建,如下所示:

var a:[CGFloat] = [1, 2, 3]
var b:[CGFloat] = [4, 5, 6]

如何将它们合并为< code>[1,2,3,4,5,6]?

共有3个答案

左丘繁
2023-03-14

如果您不太喜欢运算符重载,或者更喜欢函数类型:

// use flatMap
let result = [
    ["merge", "me"], 
    ["We", "shall", "unite"],
    ["magic"]
].flatMap { $0 }
// Output: ["merge", "me", "We", "shall", "unite", "magic"]

// ... or reduce
[[1],[2],[3]].reduce([], +)
// Output: [1, 2, 3]
钱经业
2023-03-14

使用Swift 5,根据您的需要,您可以选择以下六种方式之一来连接/合并两个阵列。

Array有一个(_:_:)通用运算符。(_:_:)有以下声明:

通过串联集合和序列的元素来创建新的集合。

static func + <Other>(lhs: Array<Element>, rhs: Other) -> Array<Element> where Other : Sequence, Self.Element == Other.Element

下面的示例代码显示了如何使用(_:_:)泛型运算符将两个[Int]

let array1 = [1, 2, 3]
let array2 = [4, 5, 6]

let flattenArray = array1 + array2
print(flattenArray) // prints [1, 2, 3, 4, 5, 6]

< code >数组有一个< code> =(_:_:)通用运算符。< code> =(_:_:)具有以下声明:

将序列的元素追加到可替换范围的集合中。

static func += <Other>(lhs: inout Array<Element>, rhs: Other) where Other : Sequence, Self.Element == Other.Element

下面的示例代码显示了如何使用=(_:_:)泛型运算符将[Int]

var array1 = [1, 2, 3]
let array2 = [4, 5, 6]

array1 += array2
print(array1) // prints [1, 2, 3, 4, 5, 6]

Swift Array有一个< code>append(contentsOf:)方法。< code>append(contentsOf:)具有以下声明:

将序列或集合的元素添加到此集合的末尾。

mutating func append<S>(contentsOf newElements: S) where S : Sequence, Self.Element == S.Element

以下Playground示例代码显示了如何使用< code>append(contentsOf:)方法将一个数组追加到另一个< code>[Int]类型的数组:

var array1 = [1, 2, 3]
let array2 = [4, 5, 6]

array1.append(contentsOf: array2)
print(array1) // prints [1, 2, 3, 4, 5, 6]

Swift为符合序列协议的所有类型(包括阵列)提供了一种平面图(_:))方法flatMap(_:)具有以下声明:

返回一个数组,其中包含使用此序列的每个元素调用给定转换的串联结果。

func flatMap<SegmentOfResult>(_ transform: (Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element] where SegmentOfResult : Sequence

下面的Playground示例代码展示了如何使用平面地图(_:)方法将[Int]类型的两个数组合并到一个新数组中:

let array1 = [1, 2, 3]
let array2 = [4, 5, 6]

let flattenArray = [array1, array2].flatMap({ (element: [Int]) -> [Int] in
    return element
})
print(flattenArray) // prints [1, 2, 3, 4, 5, 6]

Swift为所有符合Sequence协议(包括Array)的类型提供了一个加入()方法。加入()有以下声明:

返回这个序列的元素。

func joined() -> FlattenSequence<Self>

此外,Swift Array 有一个 init(_:) 初始值设定项。init(_:) 具有以下声明:

创建包含序列元素的数组。

init<S>(_ s: S) where Element == S.Element, S : Sequence

因此,下面的示例代码展示了如何使用<code>joined()</code>方法和<code>init(_:)</code>初始值设定项将<code>[Int]类型的两个数组合并成一个新数组:

let array1 = [1, 2, 3]
let array2 = [4, 5, 6]

let flattenCollection = [array1, array2].joined() // type: FlattenBidirectionalCollection<[Array<Int>]>
let flattenArray = Array(flattenhtml" target="_blank">Collection)
print(flattenArray) // prints [1, 2, 3, 4, 5, 6]

SwiftArray有一个减少(_:_:)方法。减少(_:_:)有以下声明:

返回使用给定闭包组合序列元素的结果。

func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result

下面的Playground代码演示了如何使用duce(_:_:)方法将[Int]类型的两个数组合并到一个新数组中:

let array1 = [1, 2, 3]
let array2 = [4, 5, 6]

let flattenArray = [array1, array2].reduce([], { (result: [Int], element: [Int]) -> [Int] in
    return result + element
})
print(flattenArray) // prints [1, 2, 3, 4, 5, 6]
咸疏珂
2023-03-14

您可以将数组与<code></code>连接起来,构建一个新数组

let c = a + b
print(c) // [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]

或使用=(或append)将一个数组附加到另一个数组:

a += b

// Or:
a.append(contentsOf: b)  // Swift 3
a.appendContentsOf(b)    // Swift 2
a.extend(b)              // Swift 1.2

print(a) // [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
 类似资料:
  • 问题内容: 如果有两个这样迅速创建的数组: 如何将它们合并到? 问题答案: 您可以使用串联数组,以建立新数组 或使用(或)将一个数组附加到另​​一个数组:

  • 问题内容: 我有两个数组。 我需要合并这些数组,并在下拉列表中显示为 我怎么能使用swift.im新手来快速获得此结果,有人可以帮忙吗? 问题答案: 压缩数组并连接结果:

  • 问题内容: 如何在Swift中连接字符串? 在我们喜欢 要么 但是我想用Swift语言做到这一点。 问题答案: 您可以通过多种方式连接字符串: 您也可以这样做: 我相信还有更多方法。 描述位 创建一个常数。(有点像)。设置后就无法更改其值。您仍然可以将其添加到其他东西并创建新变量。 创建一个变量。(有点像),因此您可以更改其值。 注意 在现实中,并有 很大的不同 ,从和,但它可以帮助类比。

  • 问题内容: 您好,我想基于数组中的唯一项合并数组。 我拥有的对象 在这个totalCells数组中,我有几个这样的对象 现在,我想制作一个数组,在该数组中我可以基于lineNumber进行数组组合。 就像我有一个具有lineNumber属性和cellWidth集合的对象。我可以这样做吗? 我可以遍历每一行并检查行号是否相同,然后按该单元格宽度。有什么办法我可以算吗? 我正在尝试获得这样的输出。 问

  • 问题内容: 如何使用将一个附加到另一个? 我正在使用图书馆发送到。 字典1 字典2 如何将两个字典结合在一起,制作一个新字典,如下所示? 我已经尝试过,但是出现了编译错误: 二进制运算符’+ =’不能应用于两个’[String:AnyObject]’操作数 问题答案: 请参阅很棒的Dollar&Cent项目 https://github.com/ankurp/Cent/blob/master/So

  • 我有以下两个Spark数据帧: 任何PySpark、SQL和HiveContext都可以提供帮助。