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

print(count) -- 5