如何将两个长度不同的数组的值相加?
如果我有两个 int 数组,例如
var array1 = [1,2,3]
var array2 = [1,2,3,5]
我希望能够将第一个数组的第一个元素与第二个数组的第一个元素相加,依此类推。但是,如果一个数组的长度与另一个数组的长度不同,我想保留未添加到返回数组中的元素。对于这个例子,我的返回数组是[2,4,6,5].
我尝试使用,zip(array1,array2).map(+)但它会从 array2 中排除 5。
回答
在两个数组共有的索引位置添加元素后(你已经用zipand做了什么map),只需添加两个数组中的剩余元素(使用append(contentsOf:) and dropFirst):
let array1 = [1, 2, 3]
let array2 = [1, 2, 3, 5]
var combined = zip(array1, array2).map(+)
let commonCount = combined.count
combined.append(contentsOf: array1.dropFirst(commonCount))
combined.append(contentsOf: array2.dropFirst(commonCount))
print(combined) // [2, 4, 6, 5]