model = { { player = "Cliff", age = 35, gender = "male" }, { player = "Ally", age = 36, gender = "female" }, { player = "Jasmine", age = 13, gender = "female" }, { player = "Lauren", age = 6.5, gender = "female" } } function for_each_array(list, operation) for key, value in ipairs(list) do operation(value) end end function filter_if(list, predicate) return function(value) if(predicate(value)) then list[#list + 1] = value end end end local list = {} for_each_array(model, filter_if(list, function(each) return each.age < 30 end))