Determining the Length of Lua Maps

We discussed Lua's length operator in the context of lists and strings. Now let's take a look at finding the length of a map.

Let's first take a look at how the length operator behaves with a map:

local x = {
a = 1,
b = 2,
c = 3,
d = 4,
e = 5,
}

print(#x) -- 0

Hmm, that was not expected. The table clearly has 5 values in it, but the result is 0. It turns out the that length operator only considers the number of list-like values contained in a table, and does not consider mappings at all.

Getting the number of items in a map requires counting items manually:

local count = 0

for key, val in pairs(x) do
count = count + 1
end

print(count) -- 5