How to format an array of strings in lines with maxWidth without breaking the words in JavaScript

1 Answer

0 votes
function formatLines(words, maxWidth) {
  const result = [];
  let currentLine = "";
  let currentLength = 0;

  for (const word of words) {
    const wordLen = word.length;

    // If adding this word exceeds maxWidth, push current line
    if (currentLength + (currentLine === "" ? 0 : 1) + wordLen > maxWidth) {
      if (currentLine !== "") {
        result.push(currentLine);
      }
      currentLine = word;
      currentLength = wordLen;
    } else {
      if (currentLine !== "") {
        currentLine += " ";
        currentLength++;
      }
      currentLine += word;
      currentLength += wordLen;
    }
  }

  // Push the last line if not empty
  if (currentLine !== "") {
    result.push(currentLine);
  }

  return result;
}

const words = ["This", "is", "a", "programming", "example", "of", "text", "wrapping"];
const maxWidth = 12;

const lines = formatLines(words, maxWidth);

for (const line of lines) {
  console.log(`"${line}"`);
}



/*
run:

"This is a"
"programming"
"example of"
"text"
"wrapping"

*/

 



answered Dec 2, 2025 by avibootz

Related questions

...