You are probably overoptimizing. I can only think of two simple ways of improving it:
1.) Use one contiguous array-like-table instead of a nested one:
you can get rid of a bunch of tables by indexing map with [x+y*width]. Drawback: need to have a constant and known width (or height).
2.) Use ffi to use an actual array
makes everything better and more complicated.
I would just leave it as-is right now, it shoudn't matter.
Also note that in your code above you don't need to do ["passable"] = true, you can assign with .passable = true too, or do that in the table constructor ({type=love.math.random(100), passable=true}).
And about OOP: that cannot help with the type of optimization you are looking for "at all". it might be a good idea to get familiar with it anyway. Also, if you haven't read about that yet, there is no "way OOP is done in Lua", everyone can have their own. but not to talk about that too much or someone will come in an discuss OOP with me and you, and that's not this thread's point