@as_viper
Начинающий веб-разработчик

Как правильно проверить написать условие в else if(не срабатывает как необходимо)?

Добрый вечер, всем!
Пытаюсь сделать следующее задание, но почему то условия if-a не срабатывают или else if начинает работать не правильно.

Создать функцию, которая принимает 1 аргумент (название произвольное)
· Если как аргумент передана не строка - функция оповещает об этом пользователя
· В полученной (как аргумент) строке функция должна убрать все пробелы в начале и в конце
· Если строка более 50 знаков - то после 50го символа часть текста скрывается и вместо них появляются три точки (...)

Подскажите где я совершил ошибку или может стоит сделать проверку не через if ?

let b;
function myFunction(a) {
    a = prompt("", "");
    b = a.split(' ').join('');
    
    if (isNaN(b) || b == null) {
        console.log("done");
    }
    else if (b > 50 && b == 50) {
        document.write(b + '...    ');
    } 
    else if (b < 50) {
        document.write(b + '++++');
    }
    else {
        alert('Ошибка! Вы ввели число!!!');
    }
}
myFunction();


Спасибо!
Всех с наступающим праздником!!!
  • Вопрос задан
  • 1160 просмотров
Решения вопроса 2
@StockholmSyndrome
function test(str) {
  if (typeof str !== 'string') {
    alert('аргумент не строка');
    return;
  }

  str = str.trim(); 
  return str.length > 50 ? str.slice(0, 50) + '...' : str;
}


ваши ошибки:
1) b = a.split(' ').join('');
этот код уберёт вообще все пробелы в строке

2) else if (b > 50 && b == 50) {
вы сравниваете строку и число, это неправильно, нужно сравнивать свойство length строки

3) else if (b > 50 && b == 50) {
это условие никогда не выполнится, b не может быть больше и одновременно равным 50

4) document.write(b + '... ');
если b больше 50 символов, то выведется b + '...', что не удовлетворяет условию
Ответ написан
Комментировать
@titelhalter
b > 50 && b == 50

Больше 50, но одновременно и равно 50, такого не бывает. Нужно тогда проверять b >= 50.
Во-вторых, вы говорите, что нужно проверять строку, а операция b > 50, приведет b к числу. Для получения длины строки нужно обратиться к свойству length.

Проверить на строку можно с помощью оператора typeof, чтобы взять первые 50 символов строки можно воспользоваться методом slice(start, end).

Сейчас Ваша функция вообще не выполняет поставленную задачу.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EvgeniyS0
@EvgeniyS0
Full-stack js developer
1) Пробелы в начале и в конце это к trim()
2) Если сравнивать строку и число выйдет совсем другое(попробуйте как-нибудь), для задачи нам нужна длина - length
нам нужно
if (res.length > 50)
 // обрезаем и добавляем ...
} else {
 // возвращаем как есть
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы