List Beautify

List Beautify

Let's assume, you are given an array of arrays of positive/negative integer/float numbers, for example - [[1, 2, 10, 150], [10, 2, 1000, 2], [1, 120, 1, 1000]]. It's always correctly filled: has at least one non-empty inner array.

When you print it as a single object, you receive

example
[[1, 2, 10, 150], [10, 2, 1000, 2], [1, 120, 1, 1000]]
                
or row by row:
example
[1, 2, 10, 150]
[10, 2, 1000, 2]
[1, 120, 1, 1000]
                

Your function should return something from both views and improved: a single string (multiline if more than one inner array), where numbers in columns should be right-aligned. There must be exactly one whitespace between the longest number in a column incl. minus (if present) and the previous comma in a row. All rows of the same length, wrapped together in the array brackets.

example
[[ 1,   2,   10,  150],
 [10,   2, 1000,    2],
 [ 1, 120,    1, 1000]]
                

Isn't it beautiful now 😍?

Input: Array of arrays of numbers.

Output: String.

Examples:

assert.strictEqual(
    listBeautify([
        [1, 2, 10, 150],
        [10, 2, 1000, 2],
        [1, 120, 1, 1000],
    ]),
    "[[ 1,   2,   10,  150],\n [10,   2, 1000,    2],\n [ 1, 120,    1, 1000]]"
);
assert.strictEqual(
    listBeautify([[1, 10, 100, -1000]]),
    "[[1, 10, 100, -1000]]"
);
assert.strictEqual(
    listBeautify([
        [1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1],
    ]),
    "[[1, 1, 1, 1, 1],\n [1, 1, 1, 1, 1],\n [1, 1, 1, 1, 1]]"
);
assert.strictEqual(
    listBeautify([
        [1, 1, -1, 1, 1],
        [1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1],
    ]),
    "[[1, 1, -1, 1, 1],\n [1, 1,  1, 1, 1],\n [1, 1,  1, 1, 1]]"
);