В этой задаче мы будем короче. Какая большая проблема - узнать о .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

Понимание проблемы: здесь у нас есть два входа:

  1. str: строка. Похоже, что предоставленные тестовые примеры дают нам слова, буквы и символы. Это не имеет значения. Все они являются частью одной струны.
  2. 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"

Алгоритм:

  1. Если длина строки меньше или равна заданному числу, просто верните строку, не усекая ее.
  2. В противном случае обрежьте строку. То есть сохранить начало строки до заданного числа и отбросить остальное.
  3. Добавьте «…» в конец усеченной строки и верните ее.

Код: см. ниже!

Без комментариев:

Если у вас есть другие решения и / или предложения, поделитесь в комментариях!

Эта статья является частью серии Создание сценариев алгоритмов freeCodeCamp.

Эта статья ссылается на Базовый алгоритм сценария freeCodeCamp: усечение строки

Вы можете подписаться на меня в Medium, LinkedIn и GitHub!