another thing you can do is use a dictionary. I read a lot of data from an Database. I can send a query to the database, and it returns a list of the field names, and then all the matching records. the field names get loaded into a dictionary called "Fields", and the records get loaded into an array.
then I can access the data like:
array.at(RecordNumber, Fields.Get("FirstName"))
if I change the query, and the FirstName field ends up in a different position in the array, the dictionary automatically takes care of that when it gets loaded - so I don't have to update any code.
And, like dop said, if you have multiple array objects, you can can put them in a family, and pass the UID of the array object you are interested into a function, and pick that by UID inside the function.