При обрезании строки возвращает 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-символьную строку, обрезанную до пробела (не включая пробел) или до конца строки (если подходящей подстроки не встретилось)
Автор решения: 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