Задать вопрос
@Morshynska

Работа с массивом и строкой, как вывести такое в консоль?

Есть массив массивов:

const textArray = [
   ["Hello", "world"],
   ["Brad", "came", "to", "dinner", "with", "us"],
   ["He", "loves", "tacos"]
];

Есть набор строк, условия форматирования каждой этой строки - чтобы она не превышала 16 символов и бала заключена символом " * " со всех сторон.

На выходе должно получится что-то вроде:

[
  "******************",
  "*Hello world     *",
  "*    Brad came to*",
  "*  dinner with us*",
  "*He loves tacos  *",
  "******************"
]
  • Вопрос задан
  • 202 просмотра
Подписаться 1 Средний 4 комментария
Решение пользователя 0xD34F К ответам на вопрос (3)
0xD34F
@0xD34F Куратор тега JavaScript
const getStrs = (arrs, len) => [
  '*'.repeat(len + 2),
  ...arrs.flatMap(arr => arr
    .reduce((acc, n) => {
      let g = acc[acc.length - 1];
      (g && (g[1] + n.length + !!g[0].length) <= len) || acc.push(g = [ [], 0 ]);
      g[1] += n.length + !!g[0].length;
      g[0].push(n);
      return acc;
    }, [])
    .map((n, i, a) => `*${n[0].join(' ')[a.length > 1 ? 'padStart' : 'padEnd'](len, ' ')}*`)),
  '*'.repeat(len + 2),
];


console.log(getStrs(textArray, 16));
Ответ написан
Комментировать