2D tile maps are exactly how they sound, imagine something like this:
This the design of our map and if we take
0 = floor
1 = wall
2 = chest
Then you can see that our map is a room with an entrance and a chest in the middle of the room our data structure for this could be like @georgeK said an Array of arrays ie.
var map =[ [1,1,1,1,1],
We would then load each of our tiles into a look up just the once and draw our room by putting that tile in place of the number on the grid.
for row in map
for each cell in row
draw tile offset by the x, y position in the array multiplied by tile width.
end inner loop
end outer loop
Now you may not wish to draw this to the canvas directly and instead draw to a off DOM canvas and then transfer the entire image at once.
As a side note a 2d map based in html 5 has been done by google as proof of concept for a multiplayer game which could give you a few ideas on optimization. video here
Hope this helps