in theory yes, but:
instead of using 4 arrays it is much smoother to use only one, you only need to create a good set of coordinate to tile conversion helper functions (and xy tile to absolute tile if use an 1D array, see later). and don’t forget to mirror your Y axis 
in practice I found better to use a 1D array instead of a 2D or a 3D one (tried them), because of faster/easier memory operations by memcpy and memset (they have UE4 derivatives), thus you can avoid time consuming loops. more exactly I use an 1D array to represent the 2D grid, what I later extended to contain Z related data too (when needed).
I use UStruct arrays for future possibility of multi-threading by FRunnable, found no reason to use UObject or Actor as a container (but maybe meanwhile UObjects can also be used in multi-threaded calculations I don’t know exactly).
I personally don’t use navmesh at all, but thought of it to get data from it and convert to tile information. Finally I dropped it because I have troops with different movement capabilities that would require more navmeshes…