Как перенести строку в двумерном массиве

Нужно вывести на экран двумерный массив с разным количеством символов в каждой строке, если количество символов в строке больше 20, перенести остаток на новую строку. Допустим

[
    [Здравствуйте, меня],
    [зовут, Иван, Иванович, Иванов]
]

Чтобы слово "Иванов" уже было на новой строке


Ответы (1 шт):

Автор решения: UModeL

Не совсем понятно, как и куда нужно выводить - массив в консоль или элементы на экран, поэтому кода чуть больше. Но, похоже, что нужен был такой вариант:

// Может быть словарный массив практически любой структуры...
let aArrayWords = [
  ['Здравствуйте', 'меня'],
  ['зовут', 'Иван', 'Иванович', 'Иванов'], '-', 'бригадир'
];
// ... а может быть простая строка
let aTextString = 'Здравствуйте меня зовут Иван Иванович Иванов - бригадир';

/* Собственно, сама функция */
function fArraysBy20Chars(aSource) {
  let nInd = 0, aTmp = [[]];
  if (typeof aSource === 'string') { aSource = aSource.split(' '); }
  aSource.flat(10).reduce((nLen, sWord) => {
    if (nLen + sWord.length > 20) {
      aTmp.push([]);
      aTmp[++nInd].push(sWord);
      return sWord.length;
    } else {
      aTmp[nInd].push(sWord);
      return nLen + sWord.length;
    }
  }, 0);
  return aTmp;
}
console.log( fArraysBy20Chars(aArrayWords) );
console.log( fArraysBy20Chars(aTextString) );

/* Вывод на экран */
function fArraysToScreen(aSource) {
  aSource.forEach(aWords => document.body.insertAdjacentHTML('beforeend', `<span style="box-shadow: inset 0 0 2px red;">${aWords.join(' ')}</span><br>`));
}
fArraysToScreen( fArraysBy20Chars(aArrayWords) );

→ Ссылка