В этой задаче мы будем короче. Какая большая проблема - узнать о .slice()
, который является очень распространенным методом в JavaScript.
Инструкции по алгоритму
Обрезать строку (первый аргумент), если она длиннее заданной максимальной длины строки (второй аргумент). Вернуть усеченную строку с окончанием
...
.
Предоставленные тестовые примеры
truncateString("A-tisket a-tasket A green and yellow basket", 8)
должен вернуть "A-tisket ...".truncateString("Peter Piper picked a peck of pickled peppers", 11)
должен вернуть «Питер Пайпер ...».truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length)
должен вернуть «A-tisket a-tasket A, зелено-желтая корзина».truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2)
должен вернуть «A-tisket a-tasket. Зелено-желтая корзина».truncateString("A-", 1)
должен вернуть "A ...".truncateString("Absolutely Longer", 2)
должен вернуть "Ab ...".
Решение №1: .slice ()
PEDAC
Понимание проблемы: здесь у нас есть два входа:
str
: строка. Похоже, что предоставленные тестовые примеры дают нам слова, буквы и символы. Это не имеет значения. Все они являются частью одной струны.num
: число.
Наш вывод будет строкой. В конечном итоге мы хотим, чтобы наш вывод был str
truncated - то есть обрезанным - после num
символов с добавлением «…» в конец усеченного str
.
Так например
truncateString('Aluminum', 4)
// returns 'Alum...'
Единственный крайний случай, о котором нам говорят, - если длина str
меньше или равна num
, нам нужно просто вернуть str
, не усекая его.
Примеры / тестовые примеры. Предоставленные нами тестовые примеры довольно просты.
Структура данных: нам даны строки, и ожидается, что мы вернем строку. Конкатенация (сложение) строк не требует от нас изменения типа или структуры данных, поэтому давайте просто остановимся на строках.
Давайте на секунду поговорим о .slice()
:
.slice()
извлекает часть строки и возвращает ее как новую строку. Если вы вызовете .slice()
для строки, не передав ей никакой дополнительной информации, он вернет всю строку.
"Bastian".slice() // returns "Bastian"
У нас есть возможность передать .slice()
beginIndex и endIndex, например, так
.slice(beginIndex, endIndex)
Это сообщает .slice()
, где начать нарезку и где закончить нарезку. Имейте в виду, что строки имеют нулевой индекс! Итак, если мы хотим вернуться от 2-индексной буквы «Bastian» до, но не включая 5-индексной буквы «Bastian», мы могли бы сделать следующее:
"Bastian".slice(2, 5) // returns "sti"
Имея это в виду, мы можем обрезать слова, передав ноль в качестве beginIndex и num
в качестве endIndex.
"Bastian".slice(0, 4) // returns "Bast"
Алгоритм:
- Если длина строки меньше или равна заданному числу, просто верните строку, не усекая ее.
- В противном случае обрежьте строку. То есть сохранить начало строки до заданного числа и отбросить остальное.
- Добавьте «…» в конец усеченной строки и верните ее.
Код: см. ниже!
Без комментариев:
Если у вас есть другие решения и / или предложения, поделитесь в комментариях!