Tables

A table is a Lua data type that can store multiple values including numbers, booleans, strings, functions, and more. Tables are constructed with curly braces ({}) as shown here:

-- Construct an empty table assigned to variable "t"
local t = {}
print(t)

Once constructed, a table can behave as either an array or a dictionary as illustrated in the following sections.

Arrays

An array is a simple list of ordered values, useful for storing collections of data such as a group of players with special permissions.

Creating Arrays

To create an array using a Lua table, simply store the values sequentially, separated by commas. An array value can be any non-nil type (boolean, number, string, function, userdata, or even another table).

-- Construct an array with three items
local testArray = {"A string", 3.14159, workspace.Part}

Reading From Arrays

To read from an array, add a pair of brackets after its reference and specify the index number of the element inside ([pos]):

Unlike some languages, Lua uses 1-based indexing for arrays, meaning that the first item in the array is [1], not [0].

-- Construct an array with three items
local testArray = {"A string", 3.14159, workspace.Part}
 
print(testArray[1])
print(testArray[2])
print(testArray[3])l

Writing Into Arrays

The value of an array index can be defined or rewritten by indicating the index number in brackets ([pos]) followed by = and then the value:

local testArray = {"A string", 3.14159, workspace.Part}
 
testArray[2] = 12345
testArray[4] = "New string"
 
print(testArray[2])
print(testArray[4])

Iterating Over Arrays

Arrays can be iterated over (looped through) in two ways:

  • Use the built-in ipairs() function in a for loop.

  • Get the array’s length using the # operator and loop from 1 to that length value.

local testArray = {"A string", 3.14159, workspace.Part, "New string"}
 
-- Loop using "ipairs()"
for index, value in ipairs(testArray) do
	print(index, value)
end
 
-- Iterate using the array length operator (#)
for index = 1, #testArray do
	print(index, testArray[index])
end

Inserting Items

An item can be inserted at the end of an array through either of these methods:

  • Pass the array reference and the item value to Lua’s table.insert() function.

  • Add the new item to the array using the t[#t+1] syntax.

local testArray = {"A string", 3.14159}
 
table.insert(testArray, "New string")
testArray[#testArray+1] = "Another new string"
 
print(testArray[3])
print(testArray[4])

Last updated