String.prototype.length is greater or equal to lim. If not, return it as-is.String.prototype.slice() and String.prototype.lastIndexOf() to find the index of the last space below the desired lim.String.prototype.slice() to appropriately truncate str based on lastSpace, respecting whitespace if possible and appending ending at the end.ending, to use the default ending of '...'.const truncateStringAtWhitespace = (str, lim, ending = '...') => { if (str.length <= lim) return str; const lastSpace = str.slice(0, lim - ending.length + 1).lastIndexOf(' '); return str.slice(0, lastSpace > 0 ? lastSpace : lim - ending.length) + ending; };
truncateStringAtWhitespace('short', 10); // 'short'
truncateStringAtWhitespace('not so short', 10); // 'not so...'
truncateStringAtWhitespace('trying a thing', 10); // 'trying...'
truncateStringAtWhitespace('javascripting', 10); // 'javascr...'Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️