如何在Swift中合并和格式化数组?(X和Y坐标阵列)



我正试图以特定格式合并两个数组,以便创建一个用于创建图形的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轴数组合并为单一格式的数组?

您可以使用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
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{
    print("(pt)")
}

结果:

(1, 2)
(2, 3)
(3, 4)
(4, 5)

最新更新