Para transformar el string de los mapas en un arreglo bidimensional, también puedes usar expresiones regulares y un match
const map = maps[0]
.match(/[IXO\-]+]/g)
.map(a=>a.split(""))
Explicación
en
.match(/[IXO\-]+]/g)
estamos diciendo:
Búscame las palabras que cumplan con estas características
/[IXO\-]+/g
desglose
[IXO-]+ significa
búscame todo lo que empiece por I,X,O o -, pero como el - es una palabra reservada usamos el slash invertido -
- decimos que si o si hay 1 o más caracteres iguales, despues del primero
g le decimos que haga esa busqueda en todo el string
Resumen
Le decimos búscame todo lo que empiece por I,X,O o -, y que todos los caracteres de ese tipo que le siguen
Entonces como, cada fila esta separada por una espacio o salto de linea, solo devolverá esas palabras
//(10)
['IXXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'-XXXXXXXXX',
'OXXXXXXXXX']
Luego ya es facil. le pasamos un map y le decimos que por cada array recibido, vamos a revolverlo, pero ahora separado los elementos
.map(a=>a.split(""))
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?