Lua Array Tutorial – Complete Guide

Hello, coding enthusiasts! There’s a high chance that you’ve heard of Lua if you’re into game development, specificially Roblox. But, how familiar are you with the idea of ‘Lua arrays’? If you’re scratching your head, don’t worry! This tutorial is designed to help you understand Lua arrays from a beginner’s point of view, with engaging examples related to game mechanics.

What are Lua Arrays?

Lua, an easy-to-learn yet powerful scripting language, doesn’t have built-in support for arrays. What it does have is a robust, flexible table structure. You might be wondering, if Lua doesn’t have arrays, then why are we talking about it? The key lies in learning how to simulate array-like behaviour using Lua’s tables.

What is Lua Arrays Used For?

In Lua, we can consider an array as a table with integer keys starting from 1. Why integer keys? Since arrays are ordered collections, it helps to keep track of the elements. Arrays play a crucial role in handling sequence data, like storing multiple responses from a player, capturing event outcomes or even saving high scores!

Why Should You Learn Lua Arrays?

If you’re planning to dive into game development, learning about Lua arrays is a valuable addition to your skillset. Being able to efficiently handle data collections will let you create more complex game mechanics, enhance the player experience, and add new layers of fun and excitement to your games. Your journey starts here, so let’s get coding!

CTA Small Image

Creating a Basic Lua Array

Believe it or not, creating arrays in Lua is as simple as defining a table. Let’s look at how to create a basic array in Lua:

players = {"Player1", "Player2", "Player3"}
print(players[1]) -- This will output 'Player1'

In this example, we define a table called ‘players’ that holds the names of three players. Notice how the first player is accessed – using the index 1.

Adding items to a Lua Array

Adding new items to an existing array requires understanding how to perform basic table operations in Lua. Let’s add a new player to our game:

table.insert(players, "Player4")
print(players[4]) -- This will output 'Player4'

In this example, we use the built-in Lua function table.insert to add a new player to our ‘players’ array.

Removing Items from a Lua Array

Just like we can add items to a Lua array, we can also remove them. Here’s how you’d remove an item from a Lua array:

table.remove(players, 1)
print(players[1]) -- This will output 'Player2'

In this code snippet, we’re using Lua’s table.remove function to take out the first player from the array. Following the removal, ‘Player2’ becomes the first player and when we print players[1], it displays ‘Player2’.

Looping through a Lua Array

If you want to go through each player in your array, you’d use a loop:

for i, player in ipairs(players) do
    print(i, player)

This script outputs the index and name of each player. ‘ipairs’ is a handy Lua function that simplifies iterating over arrays.

Manipulating Lua Arrays

As you become more experienced with Lua and eager to enhance your games, you’ll often find the need to manipulate arrays. This could involve operations like sorting, reversing, or even merging arrays. Let’s go through a couple of these operations:

Sorting An Array in Lua:

Sorting helps to organize the elements of an array in a particular order (ascending or descending). Suppose we have an array of the top scores and we want to sort them in descending order. Here’s how:

topScores = {90, 72, 85, 60, 92}
table.sort(topScores, function(a, b) return a>b end)
for i, score in ipairs(topScores) do

In this code, the ‘table.sort’ function sorts the ‘topScores’ array in descending order.

Reversing an Array in Lua:

Reversing an array is flipping the position of the elements, putting the last element comes first and the first comes last. Here’s an example of how to reverse an array in Lua:

tableLength = #players
for i=1, math.floor(tableLength / 2) do
    players[i], players[tableLength - i + 1] = players[tableLength - i + 1], players[i]
for i, player in ipairs(players) do

In this code, we continue with our initial ‘players’ array and reverse the order of players using a simple for loop.

Merging Arrays in Lua:

There might be scenarios when you want to combine two arrays. For instance, if there are two teams of players, and you want to merge them into one, here’s how you’d do that:

team1 = {"Player1", "Player2", "Player3"}
team2 = {"Player4", "Player5", "Player6"}
for i, player in ipairs(team2) do
    table.insert(team1, player)
for i, player in ipairs(team1) do

In this snippet, we define two arrays ‘team1’ and ‘team2’. We then append all players from ‘team2’ to ‘team1’ and print out the merged list.

Learning how to perform diverse operations on Lua arrays can significantly contribute to a more dynamic and immersive gaming experience, so don’t shy away from practicing these skills!

Multidimensional Arrays in Lua

Sometimes, you may need to store data in a grid-like structure, such as game board for tic-tac-toe. This is where multidimensional arrays come into play. A simple way to construct a multidimensional array in Lua is by creating a table of tables:

board = { {0, 1, 0}, {1, 0, 2}, {2, 1, 0} }
print(board[2][3]) -- This will output '2'

In this example, ‘board’ is a 3×3 grid, resembling a tic-tac-toe board. We can access any cell of this board using two indexes.

Using Arrays to Store Objects

Lua tables lend themselves nicely to object-oriented programming. For instance, you can use arrays to store game player objects, each with their own properties:

players = {
        {name = "Player1", score = 90},
        {name = "Player2", score = 85},
        {name = "Player3", score = 76},
print(players[2].score) -- This will output '85'

In this code, we’ve made an array of player objects, where each player object is a table with ‘name’ and ‘score’ fields.

Array Slicing in Lua

There might be cases when you need to create a new array from a subset of an existing array (a slice). Lua doesn’t have a built-in function to slice arrays, but you can write one yourself:

function slice(arr, first, last)
    local sliced = {}
    for i = first or 1, last or #arr do
        sliced[#sliced+1] = arr[i]
    return sliced
print(slice(players,2,3)[1].name) -- This will output 'Player2'

This ‘slice’ function creates a new array from the ‘first’ index to the ‘last’ index of the input array.

Shallow and Deep Copying

Sometimes, you might want to create a copy of the array. However, simply assigning a table to a new variable doesn’t create a copy but another reference to the same table. This is called a ‘shallow copy’. To perform a ‘deep copy’, where a new table is created, you can write a function:

function deepCopy(original)
    local copy = {}
    for key, value in pairs(original) do
        copy[key] = value
    return copy
copyPlayers = deepCopy(players)
print(copyPlayers[2].name) -- This will output 'Player2'

In this code, ‘deepCopy’ function creates a new copy of the ‘players’ array which isn’t linked to the original.

An understanding of Lua arrays and the operations associated with them will hugely benefit your development process in Lua and other programming languages. So, keep practicing and exploring problem-solving opportunities to reinforce your skills! Happy coding!

Where to Go Next?

So, you have taken the first step in understanding and using Lua arrays. The journey doesn’t stop here! As in any other programming language, mastering Lua requires consistent effort, practice and exploration. The key is to keep building, face new coding challenges and enhance your problem-solving skills.

A fantastic way to further build upon your knowledge is by enrolling in the Roblox Game Development Mini-Degree provided by us, at Zenva Academy. This comprehensive collection of courses will take your game creation skill-set to the next level by providing a deeper understanding of Roblox Studio and Lua. You’ll get hands-on experience programming different kinds of games, all at your own pace and schedule.

For those who are aiming for a broader experience in Roblox game development, check out our full course catalog under Roblox at Zenva Academy. This category includes a wide range of beneficial courses, suitable for both beginners and those who have already learned the basics. Your journey with Zenva can take you from beginner to professional – the world of game development awaits! Happy exploring!


That’s a wrap! We explored a vital concept in Lua programming and game development – the Lua arrays. From creation and manipulation to storing complex objects and slicing, we got a hands-on taste of how powerful and flexible Lua arrays can be. The potential to create engaging mechanics and dynamic experiences in your games is limitless with this knowledge.

Advance your Lua skills, build complex game mechanics, and create immersive experiences by enrolling in our Roblox Game Development Mini-Degree. Let’s unlock your game development potential together at Zenva Academy!

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.