Digamos que tengo una matriz o matriz 2D,
const matrix = [ [1,2,3], [4,5,6], [7,8,9] ] (pero con dimensiones mucho más grandes) y desea imprimir esta matriz en la consola. Puedo hacer esto fácilmente con console.log(matrix) y para matrices pequeñas esto es suficiente. Pero para matrices más grandes, al menos en node.js, el resultado puede ser algo como esto:
[ [ 1,2, 3 ], [ 4,5, 6 ], [ 7,8, 9 ] ] Ahora bien, esto es obviamente exagerado y, por ejemplo, 1,2,3 en realidad caben en una sola línea. Pero para dimensiones más grandes no lo hará, a pesar de que hay mucho espacio en la pantalla para ello.
Así que me gustaría mapear la matriz en una cadena, algo como esto: "1 2 3\n4 5 6\n7 8 9" . De modo que la salida se vería obligada a ser
1 2 3 4 5 6 7 8 9Esto supone que hay suficiente espacio en la pantalla para el ancho de la matriz.
Debido a que algunos números posiblemente sean más largos que otros, también estaría bien usar separadores de columnas como , o tabulaciones entre los números. Por ejemplo
1,2,3 4,555,6, 7,8,9o incluso mejor, lo más preferiblemente
1 2 3 4 555 6 7 8 9 Sé que console.table puede acercarme a lo que estoy buscando, pero creo que tiene demasiado desorden y cosas innecesarias en el camino, lo que hace que sea más difícil visualizar y comprender la matriz. Solo quiero una cuerda minimalista pura.
Puede mapear cadenas, obtener la longitud máxima y rellenar las columnas.
Al seleccionar padEnd (izquierda) o padStrart (derecha), incluso podría cambiar la orientación.
const data = [[1, 2, 3], [4, 555, 6], [7, 8, 9]], sizes = Array(data[0].length).fill(0), result = data .map(a => a.map((v, i) => { const s = v.toString(); if (sizes[i] < s.length) sizes[i] = s.length; return s; })) .map(a => a.map((s, i) => s.padEnd(sizes[i])).join(' ')) .join('\n'); console.log(result);