我正在尝试以特定格式合并两个数组,以便创建将用于创建图形的x和y坐标数组。我有[双]格式的单独的X值和Y值数组,例如:
var xAxis = [1, 2, 3, 4]
var yAxis = [2, 3, 4, 5]
我希望将它们合并,以便它们以下列格式显示:
var chartPoints = [(1,2),(2,3),(3,4),(4,5)]
或更一般地说:
chartPoints = [(x,y)]
我尝试了一些不同的选项,例如append和extend方法没有运气,因为这不会对数组进行排序或在所需的方法中对它们进行格式化。
如何将两个x和y轴数组合并为单个格式化数组?
答案 0 :(得分:2)
您可以使用zip
全局函数,给定2个序列,返回一系列元组:
let pointsSequence = zip(xAxis, yAxis)
然后,您可以使用正确的init:
获取元组数组let chartPoints = Array(pointsSequence)
数组的每个元素都是(x, y)
元组 - 但值是未命名的,因此您可以通过索引访问它们各自的值:
let point = chartPoints[0]
point.0 // This is the 1st element of the tuple
point.1 // This is the 2nd element of the tuple
如果您希望命名元组值,则可以使元组类型显式:
let chartPoints: [(x: Int, y: Int)] = Array(pointsSequence)
并且您可以使用索引(如上例所示)或使用其显式名称进行访问:
let point = chartPoints[0]
point.x
point.y
答案 1 :(得分:0)
var xAxis = [1,2,3,4]
var yAxis = [2,3,4,5]
var chartPoints: [(x:Int,y:Int)] = Array()
if(xAxis.count == yAxis.count){
for i in 0...xAxis.count-1 {
let chartPoint = (x:xAxis[i],y:yAxis[i])
chartPoints.append(chartPoint)
}
}
for pt in chartPoints{
println("\(pt)")
}
结果:
(1, 2)
(2, 3)
(3, 4)
(4, 5)