Два начина за потвърждаване на края на низ в 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)ще получим последния индекс на низа 'Bastian', който е '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: Потвърдете завършването на низ с вградени функции - с краища С ()

За това решение ще използвате метода 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

Тази статия се основава на скриптове „Обратен низ“ на алгоритъма „Основен алгоритъм“.

Три начина за факторизиране на число в JavaScript

Тази статия се основава на скриптове за базисен алгоритъм на Free Code Camp „Факторизиране на число“

Два начина за проверка за палиндроми в JavaScript

Тази статия се основава на скриптове за базисен алгоритъм на Free Code Camp „Проверка за палиндроми“.

Три начина за намиране на най-дългата дума в низ в JavaScript

Тази статия се основава на скриптове за основен алгоритъм на Free Code Camp „Намерете най-дългата дума в низ“.

Три начина за озаглавяване на изречение в JavaScript

Тази статия се основава на скриптове за основен алгоритъм на Free Code Camp „Case Case a Sentence“.

Ако имате собствено решение или някакви предложения, споделете ги по-долу в коментарите.

Или можете да ме следвате в Medium , Twitter, Github и LinkedIn , веднага след като щракнете върху зеленото сърце отдолу ;-)

# Останете любопитни, # KeepOnHacking & # MakeItHappen!

Допълнителни ресурси

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