我有以下两个数组:斯威夫特阵元组的阵
let xaxis = ["monday", "tuesday", "wednesday", "thursday", "friday"]
let yaxis = [1, 2, 3, 4, 5]
我想将它们合并到一个数组,看起来像这样:
[ ("monday", 1), ("tuesday", 2), ("wednesday", 3), ("thursday", 4), ("friday", 5)]
我有以下两个数组:斯威夫特阵元组的阵
let xaxis = ["monday", "tuesday", "wednesday", "thursday", "friday"]
let yaxis = [1, 2, 3, 4, 5]
我想将它们合并到一个数组,看起来像这样:
[ ("monday", 1), ("tuesday", 2), ("wednesday", 3), ("thursday", 4), ("friday", 5)]
使用zip
和map
:
let xaxis = ["monday", "tuesday", "wednesday", "thursday", "friday"]
let yaxis = [1, 2, 3, 4, 5]
let tuples = zip(xaxis, yaxis).map { ($0, $1) }
与简单的循环相比,这些方法速度更快,请给出您的建议 – 3stud1ant3
以上是我的建议。避免过早优化。始终使用最简洁,最具表现力的语法,不要担心优化,除非它可能会产生重大影响。性能差异与5个项目无法区分。而在发布版本时几乎不存在。所有这些都说过了,我想知道你为什么使用元组。或者你为什么使用一个字符串文本数组,而不是'Calendar.current.weekdaySymbols'。在花费第二次考虑用'for for循环替换'zip' /'map'之前,我会担心很多事情。 – Rob
我用这两个数组作为例子,但真正的应用程序将不会有数月或任何日历数据在数组中。我只想要一个如何将两个数组(一个字符串和一个int类型)转换为一个元组数组的例子。 – Martheli
试试这个:
let xaxis = ["monday", "tuesday", "wednesday", "thursday", "friday"]
let yaxis = [1, 2, 3, 4, 5]
var newArr = [(String, Int)]()
for i in 0..<xaxis.count {
newArr.append((xaxis[i], yaxis[i]))
}
print(newArr)
这使得没有使用' yaxis'数组。 – rmaddy
@rmaddy更新了答案,谢谢 – 3stud1ant3
试试这个:
let arrayMerged = zip(xaxis, yaxis).map { ($0, $1) }
或本:
let arrayMerged = Array(zip(xaxis, yaxis))
@rmaddy编辑。提前错过了元组部分。 – nayem
这不是一本字典,你都出现了,它的元组的数组 – 3stud1ant3
更新的问题 – Martheli