Вернуть длину самого короткого слова в строке

Рейтинг: 0Ответов: 2Опубликовано: 02.02.2023

Задание - вывести длину самого короткого слова в строке. Вот мой код:

function findShort(s){
  arr = s.split(' ').map((item)=>item.length).sort().at(0)   
  return arr
}

Но в кодварс выдает ошибку:

TypeError: Cannot read properties of undefined (reading 'split')
    at findShort (test.js:3:11)
    at Context.<anonymous> (test.js:15:24)
    at process.processImmediate (node:internal/timers:471:21)

Что не так в коде?

Ответы

▲ 0

вывести длину самого короткого слова в строке

Предложу такой вариант.

function findShort(s){
  return s.split(' ').reduce((m, v) => v.length < m ? v.length : m, Infinity)
}

const s = '123 456 8888888 12 90'
console.log(findShort(s))

Или еще вот такой

function findShort(s){
  return Math.min(...s.split(' ').map(item => item.length))
}

const s = '123 456 8888888 12 90'
console.log(findShort(s))

Если действовать по мотивам ТСа - нужно изменить концовку

function findShort(s){
  return s.split(' ').map((item)=>item.length).sort()[0]   
}

const s = '12 345 6'
console.log(findShort(s))

▲ 0

Хм, интересная задачка, решил сделать таким образом:

Через регулярку берём слова больше 2х букв, потом сортируем их по длине и выводим первый вариант.
Т.к. автору нужна именно длина, то в конце [0].length..

const findShort = str => str.match(/([a-zа-я]{2,})/gim).sort((a,b) => a.length - b.length)[0].length;

console.log(findShort('Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне.'));