Friday, May 13, 2022

[FIXED] How do I merge and format arrays in Swift? (X and Y coordinate arrays)

Issue

I am attempting to merge two arrays in specific formatting in order to create an array of x and y coordinates that will be used to create a graph. I have separate arrays of X-Values and Y-Values in [Double] format, for example:

var xAxis = [1, 2, 3, 4]
var yAxis = [2, 3, 4, 5]

I wish to merge these such that they are presented in the following format:

var chartPoints = [(1,2),(2,3),(3,4),(4,5)]

or more generally:

chartPoints = [(x,y)]

I have tried a few different options, such as the append and extend methods to no luck as this does not sort the arrays or format them in the method required.

How can I merge the two x and y axis arrays to a singular formatted array?


Solution

You can use the zip global function, which, given 2 sequences, returns a sequence of tuples:

let pointsSequence = zip(xAxis, yAxis)

You can then obtain an array of tuples by using the proper init:

let chartPoints = Array(pointsSequence)

Each element of the array is a (x, y) tuple - but values are unnamed, so you can access their individual values by index:

let point = chartPoints[0]
point.0 // This is the 1st element of the tuple
point.1 // This is the 2nd element of the tuple

If you prefer the tuple values to be named, you can make the tuple type explicit:

let chartPoints: [(x: Int, y: Int)] = Array(pointsSequence)

and with that you can access using either the index (as in the example above) or using their explicit names:

let point = chartPoints[0]
point.x
point.y


Answered By - Antonio
Answer Checked By - Terry (PHPFixing Volunteer)

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.