Два способи підтвердити закінчення рядка в JavaScript

У цій статті я поясню, як вирішити проблему freeCodeCamp "Підтвердити закінчення " . Це передбачає перевірку того, чи рядок закінчується конкретною послідовністю символів.

Є два підходи, про які я розповім:

  1. за допомогою методу substr ()
  2. за допомогою методу ENDWith ()

Опис виклику алгоритму

Перевірте, чи рядок (перший аргумент, str) закінчується заданим цільовим рядком (другий аргумент, target).

Цю проблему можна вирішити .endsWith()методом, який був введений в ES2015. Але для цілей цього випробування ми хотіли б, щоб ви використовували один із методів підрядків JavaScript.

function confirmEnding(string, target) { return string; } confirmEnding("Bastian", "n");

Надані тестові кейси

confirmEnding("Bastian", "n") should return true. confirmEnding("Connor", "n") should return false. confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false. largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]) should return [9, 35, 97, 1000000]. confirmEnding("He has to give me a new name", "name")should return true. confirmEnding("Open sesame", "same") should return true. confirmEnding("Open sesame", "pen") should return false. confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false. Do not use the built-in method .endsWith() to solve the challenge.

Підхід №1: Підтвердити закінчення рядка за допомогою вбудованих функцій - за допомогою substr ()

Для цього рішення ви будете використовувати метод String.prototype.substr ():

  • У substr()метод повертає символи в рядку , починаючи з зазначеного місця через вказану кількість символів.

Чому ти використовуєш string.substr(-target.length)?

Якщо target.length від’ємний, метод substr () почне підрахунок з кінця рядка, що саме вам потрібно в цьому завданні коду.

Ви не хочете використовувати, string.substr(-1)щоб отримати останній елемент рядка, тому що якщо ціль довша за одну букву:

confirmEnding("Open sesame", "same")

... ціль взагалі не повернеться.

Отже, тут ми string.substr(-target.length)отримаємо останній індекс рядка "Бастіан", який є "n".

Потім ви перевіряєте, string.substr(-target.length)дорівнює ціль (істинно чи хибно).

 function confirmEnding(string, target) { // Step 1. Use the substr method if (string.substr(-target.length) === target) { // What does "if (string.substr(-target.length) === target)" represents? // The string is 'Bastian' and the target is 'n' // target.length = 1 so -target.length = -1 // if ('Bastian'.substr(-1) === 'n') // if ('n' === 'n') // Step 2. Return a boolean (true or false) return true; } else { return false; } } confirmEnding('Bastian', 'n');

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

 function confirmEnding(string, target) { if (string.substr(-target.length) === target) { return true; } else { return false; } } confirmEnding('Bastian', 'n');

Ви можете використовувати тернарний оператор як ярлик для оператора if:

(string.substr(-target.length) === target) ? true : false;

Це можна прочитати як:

if (string.substr(-target.length) === target) { return true; } else { return false; }

Потім ви повертаєте тернарний оператор у своїй функції:

 function confirmEnding(string, target) { return (string.substr(-target.length) === target) ? true : false; } confirmEnding('Bastian', 'n');

Ви також можете здійснити рефакторинг коду, щоб зробити його більш стислим, просто повернувши умову:

function confirmEnding(string, target) { return string.substr(-target.length) === target; } confirmEnding('Bastian', 'n');

Підхід №2: Підтвердження закінчення рядка за допомогою вбудованих функцій - з кінцямиWith ()

Для цього рішення ви будете використовувати метод String.prototype.endsWith ():

  • endsWith()Спосіб визначає , є чи рядок закінчується героями якого іншого рядка, повертаючи trueабо falseв залежності від обставин. Цей метод чутливий до регістру.
function confirmEnding(string, target) { // We return the method with the target as a parameter // The result will be a boolean (true/false) return string.endsWith(target); // 'Bastian'.endsWith('n') } confirmEnding('Bastian', 'n');

Сподіваюсь, вам це було корисно. Це частина мого циклу статей “Як вирішити алгоритми FCC”, присвячених проблемам алгоритму freeCodeCamp, де я пропоную кілька рішень і покроково пояснюю, що відбувається під капотом.

Три способи повторити рядок у JavaScript

У цій статті я розтлумачу, як вирішити завдання freeCodeCamp "Повторити рядок, повторити рядок". Це передбачає ...

Три способи змінити рядок у JavaScript

Ця стаття заснована на сценарії базового алгоритму табору Free Code Camp «Зворот рядка»

Три способи розкласти число на множники в JavaScript

Ця стаття заснована на сценарії базового алгоритму табору Free Code Camp “Розділення числа на факториали”

Два способи перевірити паліндроми в JavaScript

Ця стаття заснована на сценарії базового алгоритму табору Free Code Camp «Перевірка паліндромів».

Три способи знайти найдовше слово в рядку в JavaScript

Ця стаття заснована на сценарії базового алгоритму табору Free Code Camp «Знайди найдовше слово в рядку».

Три способи озаглавити речення у JavaScript

Ця стаття заснована на сценарії базового алгоритму табору Free Code Camp “Заголовок - вирок”.

Якщо у вас є власне рішення чи будь-які пропозиції, поділіться ними нижче в коментарях.

Або ви можете стежити за мною на Medium , Twitter, Github та LinkedIn , відразу після того, як ви натиснете зелене серце внизу ;-)

# Будьте цікаві, # KeepOnHacking & # MakeItHappen!

Додаткові ресурси

  • метод substr () - MDN
  • ENDWith () метод - MDN
  • Тернарний оператор - MDN