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

时间:2015-07-30 06:29:50

标签: ios arrays swift merge append

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

2 个答案:

答案 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)