@Sherlok_homs

Как обрезать строку в Javascript?

Изучаю JS, прошу помощи, разъясните, пожалуйста, код
Задача - обрезать строку (первый аргумент), если она длиннее заданной максимальной длины строки (второй аргумент). Вернуть усеченную строку с окончанием ....
truncateString("A-tisket a-tasket A green and yellow basket", 8) should return the string A-tisket....
truncateString("Peter Piper picked a peck of pickled peppers", 11) should return the string Peter Piper....
truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length) should return the string A-tisket a-tasket A green and yellow basket.
truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2) should return the string A-tisket a-tasket A green and yellow basket.
truncateString("A-", 1) should return the string A....
truncateString("Absolutely Longer", 2) should return the string Ab....


function truncateString(str, num) {

  if (str.length > num) {
    return str.slice(0, num) + "...";
  } else {
    return str;
  }
}


function truncateString(str, num) {
  return str.length > num ? str.slice(0, num) + "..." : str;
}


Я правильно понимаю, что в первом случае если длина str > номера, то возвращать нулевую строку массива и число? Что значит в коде + "..."?
А второй случай как прочитать? Что значит : str? Расскажите, пожалуйста, каждую строку, если не сложно
  • Вопрос задан
  • 1758 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
возвращать нулевую строку массива

Нет. Посмотрите, что делает метод строки slice() — он возвращает часть строки.
const str = "abcdef";
// индексы:  012345

str.slice(2, 4)
// от индекса 2, т.е. "c"
// до индекса 4 (но не включая его)
// т.е. до "e", но без самой "e"
// итого вернёт "cd"

Что значит в коде + "..."

Строки в JavaScript можно «складывать»:
"Hello" + " world!" 
// получится "Hello world!"

"Понимаете?"  +  "..."


Что значит : str

Это часть «тернарного оператора». Как «унарный» от 1-го аргумента, «бинарный» – от двух аргументов, так «тернарный» – от трёх.

Логически похоже на if () then {} else {}, но это выражение - туда нельзя засовывать дополнительные действя, как в if. Удобен для короткой записи, когда нужно вернуть то или иное значение, в зависимости от условия:
let a = 5 > 2    ?  "5 больше 2"  :  "5 не больше 2";
        условие     если верно       если ложно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Spaceoddity
function truncateString(str, num) { // функция принимает два аргумента - саму строку и ограничение длины строки

  if (str.length > num) { // если длина строки больше ограничения
    return str.slice(0, num) + "..."; // обрезаем строку до ограничения, в конце добавляем многоточие (sic!) и возвращаем 
  } else { // в противном случае
    return str; // возвращаем исходную строку
  }
}

Вторая функция делает всё то же самое, только записана в одну строчку - https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы