我有下面这两个数组:
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 = Array(zip(xaxis, yaxis)) // or `zip(xaxis, yaxis).map { ($0, $1) }`
我知道你询问的是元组,但你也可以考虑使用自定义对象,例如:
struct Day {
let name: String
let value: Int
}
let names = ["monday", "tuesday", "wednesday", "thursday", "friday"]
let values = [1, 2, 3, 4, 5]
let days = zip(names, values).map(Day.init)
Calendar.current.weekdaySymbols
。在考虑用 for
循环替换 zip
/map
之前,有很多事情需要担心。 - Rob.map { ($0, $1) }
不会进行转换,因此 Array(zip(xaxis, yaxis))
更好,可以避免通常需要使用 transform
+Array.init
的情况。 - user652038Array(zip(…))
可能更好。谢谢。 - Rob试试这个:
let arrayMerged = zip(xaxis, yaxis).map { ($0, $1) }
let arrayMerged = Array(zip(xaxis, yaxis))
试试这个:
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
数组。 - rmaddylet tuples = xaxis.enumerated().map { (index, value) in (value, yaxis[index]) }
yaxis
的数量总是与 xaxis
相匹配。xaxis
数组中的值是唯一的。 - rmaddy