Если есть два массива, созданных в swift следующим образом:
var a:[CGFloat] = [1, 2, 3]
var b:[CGFloat] = [4, 5, 6]
Как они могут быть объединены с [1, 2, 3, 4, 5, 6]?
Если есть два массива, созданных в swift следующим образом:
var a:[CGFloat] = [1, 2, 3]
var b:[CGFloat] = [4, 5, 6]
Как они могут быть объединены с [1, 2, 3, 4, 5, 6]?
 Вы можете объединить массивы с помощью +, создав новый массив
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 5, в соответствии с вашими потребностями, вы можете выбрать один из шести следующих способов объединения/объединения двух массивов.
Array +(_:_:) Array имеет общий оператор +(_:_:). +(_:_:) имеет следующую декларацию:
Создает новую коллекцию, объединяя элементы коллекции и последовательности.
static func + <Other>(lhs: Array<Element>, rhs: Other) -> Array<Element> where Other : Sequence, Self.Element == Other.Element
 В следующем примере кода Playground показано, как объединить два массива типа [Int] в новый массив с помощью универсального оператора +(_:_:):
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let flattenArray = array1 + array2
print(flattenArray) // prints [1, 2, 3, 4, 5, 6]
Array +=(_:_:) Array имеет общий оператор +=(_:_:). +=(_:_:) имеет следующую декларацию:
Добавляет элементы последовательности в коллекцию с возможностью замены диапазона.
static func += <Other>(lhs: inout Array<Element>, rhs: Other) where Other : Sequence, Self.Element == Other.Element
 В следующем примере кода Playground показано, как добавить элементы массива типа [Int] в существующий массив с помощью универсального оператора +=(_:_:):
var array1 = [1, 2, 3]
let array2 = [4, 5, 6]
array1 += array2
print(array1) // prints [1, 2, 3, 4, 5, 6]
Array append(contentsOf:) Swift Array имеет метод append(contentsOf:). append(contentsOf:) имеет следующую декларацию:
Добавляет элементы последовательности или коллекции в конец этой коллекции.
mutating func append<S>(contentsOf newElements: S) where S : Sequence, Self.Element == S.Element
 В следующем примере кода Playground показано, как добавить массив в другой массив типа [Int] с помощью метода append(contentsOf:):
var array1 = [1, 2, 3]
let array2 = [4, 5, 6]
array1.append(contentsOf: array2)
print(array1) // prints [1, 2, 3, 4, 5, 6]
flatMap(_:) метода Sequence flatMap(_:) Swift предоставляет flatMap(_:) для всех типов, которые соответствуют протоколу Sequence (включая Array). flatMap(_:) имеет следующее объявление:
Возвращает массив, содержащий объединенные результаты вызова данного преобразования с каждым элементом этой последовательности.
func flatMap<SegmentOfResult>(_ transform: (Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element] where SegmentOfResult : Sequence
 В следующем примере кода Playground показано, как объединить два массива типа [Int] в новый массив с помощью flatMap(_:):
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]
Sequence joined() и init(_:) Array init(_:) Swift предоставляет метод joined() для всех типов, которые соответствуют протоколу Sequence (включая Array). joined() имеет следующее объявление:
Возвращает элементы этой последовательности последовательностей, сцепленные.
func joined() -> FlattenSequence<Self>
 Кроме того, Swift Array имеет init(_:). init(_:) имеет следующее объявление:
Создает массив, содержащий элементы последовательности.
init<S>(_ s: S) where Element == S.Element, S : Sequence
 Поэтому в следующем примере кода Playground показано, как объединить два массива типа [Int] в новый массив с помощью метода init(_:) joined() и init(_:):
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let flattenCollection = [array1, array2].joined() // type: FlattenBidirectionalCollection<[Array<Int>]>
let flattenArray = Array(flattenCollection)
print(flattenArray) // prints [1, 2, 3, 4, 5, 6]
reduce(_:_:) Array reduce(_:_:) Swift Array имеет метод reduce(_:_:). reduce(_:_:) имеет следующую декларацию:
Возвращает результат объединения элементов последовательности с использованием данного замыкания.
func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result
 Следующий код Playground показывает, как объединить два массива типа [Int] в новый массив с помощью метода reduce(_:_:):
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]
Если вы не большой поклонник перегрузки операторов или просто более функционального типа:
// 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]
Мой любимый метод, так как Swift 2.0 flatten
var a:[CGFloat] = [1, 2, 3]
var b:[CGFloat] = [4, 5, 6]
let c = [a, b].flatten()
Это вернет FlattenBidirectionalCollection, поэтому, если вы просто хотите CollectionType, этого будет достаточно, и вы получите ленивую оценку бесплатно. Если вам нужен именно массив, вы можете сделать это:
let c = Array([a, b].flatten())
 Для завершения списка возможных альтернатив, reduce может быть использована для реализации поведения Платтена:
var a = ["a", "b", "c"] 
var b = ["d", "e", "f"]
let res = [a, b].reduce([],combine:+)
 Лучшая альтернатива (с точки зрения производительности/памяти) из представленных - просто flatten, просто лениво оборачивать исходные массивы без создания новой структуры массива.
 Но обратите внимание, что LazyCollection не возвращает LazyCollection, поэтому ленивое поведение не будет распространяться на следующую операцию по цепочке (map, flatMap, filter и т.д.).
 Если ленивость имеет смысл в вашем конкретном случае, просто не забудьте добавить или добавить .lazy к .lazy flatten(), например, изменив пример Tomasz следующим образом:
let c = [a, b].lazy.flatten()
Если вы хотите, чтобы второй массив был вставлен после определенного индекса, вы можете сделать это (с Swift 2.2):
let index = 1
if 0 ... a.count ~= index {
     a[index..<index] = b[0..<b.count]
}
print(a) // [1.0, 4.0, 5.0, 6.0, 2.0, 3.0] 
Swift 3.0
Вы можете создать новый массив, объединив два существующих массива с совместимыми типами с оператором сложения (+). Новый тип массива выводится из типа двух массивов, которые вы добавляете вместе,
let arr0 = Array(repeating: 1, count: 3) // [1, 1, 1]
let arr1 = Array(repeating: 2, count: 6)//[2, 2, 2, 2, 2, 2]
let arr2 = arr0 + arr1 //[1, 1, 1, 2, 2, 2, 2, 2, 2]
это правильный результат приведенных выше кодов.
Swift 4.X
Самый простой способ, который я знаю, это просто использовать знак +
var Array1 = ["Item 1", "Item 2"]
var Array2 = ["Thing 1", "Thing 2"]
var Array3 = Array1 + Array2
// Array 3 will just be them combined :)
Здесь самый короткий способ слияния двух массивов.
 var array1 = [1,2,3]
 let array2 = [4,5,6]
Объединить/объединить их
array1 += array2
New value of array1 is [1,2,3,4,5,6]
var arrayOne = [1,2,3]
var arrayTwo = [4,5,6]
если вы хотите результат как: [1,2,3, [4,5,6]]
arrayOne.append(arrayTwo)
Приведенный выше код преобразует arrayOne как отдельный элемент и добавит его в конец arrayTwo.
если вы хотите результат как: [1, 2, 3, 4, 5, 6], то
arrayOne.append(contentsOf: arrayTwo)
Приведенный выше код добавит все элементы arrayOne в конец arrayTwo.
Благодарю.
Marge массив, который представляет собой разные типы данных:
var arrayInt = [Int]()
arrayInt.append(6)
var testArray = ["a",true,3,"b"] as [Any]
testArray.append(someInt)
Выход:
["a", true, 3, "b", "hi", 3, [6]]
Аналогично со словарями массивов можно:
var dict1 = [String:[Int]]()
var dict2 = [String:[Int]]()
dict1["key"] = [1,2,3]
dict2["key"] = [4,5,6]
dict1["key"] = dict1["key"]! + dict2["key"]!
print(dict1["key"]!)
и вы можете перебрать dict1 и добавить dict2, если "ключ" совпадает