如果在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]
其他回答
如果你正在处理大型序列,那么更有效的方法是使用Apple算法包中定义的链方法。
let n1 = [1, 2, 3]
let n2 = [4, 5, 6]
let allNumbers = chain(n1, n2)
for num in allNumbers {
print(num) // for loop prints 1 to 6
}
// Similarly for String type
let s = chain("foo", "BAR") // produces "fooBAR"
Chain相对于其他方法的优点:
允许混合不同的序列类型
let n = chain([10, 20, 30], 1...3) // will produce 10, 20, 30, 1, 2, 3
不进行新的内存分配
chain方法本质上迭代第一个序列,当它在第一个序列中遇到endIndex时,它就开始无缝地迭代第二个序列。
如果你想在一个特定的索引后面插入第二个数组,你可以这样做(从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]
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的末尾。
谢谢。
斯威夫特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 :)
斯威夫特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]
这是上述代码的正确结果。