При обрезании строки возвращает undefined

Обрезаю строку, нужно, чтоб обрезало на пробеле, но не короче 80 знаков, пробовал через циклы, переводил в массив, все равно undefined.(в строке больше, чем 80 знаков)

let cutStr = (str, num = 80) => {
        if (str[num] === ' ') {
            return str.slice(0, num)
        } else {
            cutStr(str, num+1)
        }
    }
    
    console.log(cutStr(abc))


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

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

str.match(/.{80,}( |$)/)[0].slice(0, -1)

Возвратит первую минимум 80-символьную строку, обрезанную до пробела (не включая пробел) или до конца строки (если подходящей подстроки не встретилось)

→ Ссылка
Автор решения: Igor
return cutStr(str, num+1)
^^^^^^
→ Ссылка
Автор решения: teran

Решение через регулярку для длины 8.

values = ['qwe', 'qweqweqweqwe asdasdasd', 'qwe qwe qwe aaa'];

let cutStr = s => s.replace(/^(.{8,}?)\s.*/, '$1');


console.log(values.map(cutStr));

а так в вашем решении отсутствует return и в целом рекурсия на большом тексте приведет к крашу. здесь достаточно цикла. Если строка короче то возвращаете. А так пишите while(s[++num] != ' '); или до конца строки, после чего вовзращаете slice до полученного num

→ Ссылка