Максимально простое решение, превращаем вложенный массив в плоский с помощью встроенного метода:
const join = val =>
Array.isArray(val)
? val.flat(Infinity).join('')
: `${val}`;
Чуть посложнее, применяем рекурсию:
const join = val =>
val instanceof Array
? val.reduce((acc, n) => acc + join(n), '')
: val + '';
Ещё сложнее, рекурсии нет:
function join(val) {
const result = [];
const stack = [];
for (let i = -1, arr = [ val ]; ++i < arr.length || stack.length;) {
if (i === arr.length) {
[ i, arr ] = stack.pop();
} else if (arr[i]?.constructor === Array) {
stack.push([ i, arr ]);
[ i, arr ] = [ -1, arr[i] ];
} else {
result.push(arr[i]);
}
}
return ''.concat(...result);
}