În acest articol, voi explica cum să rezolvați Routech’s „Confirmați sfârșitulprovocare. Aceasta implică verificarea dacă un șir se termină cu o secvență specifică de caractere.

Există cele două abordări pe care le voi aborda:

  1. folosind metoda substr ()
  2. folosind metoda endsWith ()

Descrierea provocării algoritmice

Verificați dacă un șir (primul argument, str) se termină cu șirul țintă dat (al doilea argument, target).

Această provocare poate fi rezolvată cu .endsWith() , care a fost introdusă în ES2015. Dar, în scopul acestei provocări, ne-ar plăcea să utilizați în schimb una dintre metodele de sub șir JavaScript.

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

Cazuri de test furnizate

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.

Abordarea nr. 1: Confirmați sfârșitul unui șir cu funcții încorporate – cu substr ()

Pentru această soluție, veți utiliza metoda String.prototype.substr ():

  • substr() metoda returnează caracterele dintr-un șir care începe la locația specificată prin numărul specificat de caractere.

De ce folosești string.substr(-target.length)?

Dacă target.length este negativ, metoda substr () va începe numărarea de la sfârșitul șirului, ceea ce doriți în această provocare de cod.

Nu vrei să folosești string.substr(-1) pentru a obține ultimul element al șirului, deoarece dacă ținta este mai lungă decât o literă:

confirmEnding("Open sesame", "same")

… ținta nu se va întoarce deloc.

Deci aici string.substr(-target.length) va primi ultimul index al șirului „Bastian” care este „n”.

Apoi verificați dacă string.substr(-target.length) este egal cu ținta (adevărat sau fals).


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');

Fara comentarii:


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

Puteți utiliza un operator ternar ca o comandă rapidă pentru instrucțiunea if:

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

Acest lucru poate fi citit ca:

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

Apoi returnați operatorul ternar în funcția dvs.:


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

De asemenea, vă puteți refactura codul pentru a-l face mai succint, doar returnând condiția:

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

Abordarea nr. 2: Confirmați sfârșitul unui șir cu funcții încorporate – cu capete Cu ()

Pentru această soluție, veți utiliza metoda String.prototype.endsWith ():

  • endsWith() metoda determină dacă un șir se termină cu caracterele altui șir, revenind true sau false Asa Potrivit. Această metodă este sensibilă la majuscule.
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');

Sper că ți s-a părut de ajutor. Aceasta face parte din seria mea de articole „How to Solve FCC Algorithms” despre provocările Routech Algorithm, unde propun mai multe soluții și explic pas cu pas ce se întâmplă sub capotă.

Trei moduri de a repeta un șir în JavaScript
În acest articol, voi explica cum să rezolvați provocarea Routech „Repetează un șir repetă un șir”. Aceasta implică…

Trei moduri de a inversa un șir în JavaScript
Acest articol se bazează pe Free Code Camp Basic Algorithm Scripting „Reverse a String”

Trei moduri de a factorializa un număr în JavaScript
Acest articol se bazează pe Scriptul Algoritmului de Bază al Codului Free Camp „Factorializați un număr”

Două moduri de a verifica palindromii în JavaScript
Acest articol se bazează pe Free Code Camp Basic Algorithm Scripting „Verificați dacă există palindromuri”.

Trei moduri de a găsi cel mai lung cuvânt într-un șir în JavaScript
Acest articol se bazează pe Free Code Camp Basic Algorithm Scripting „Găsiți cel mai lung cuvânt într-un șir”.

Trei moduri de a titla o frază în JavaScript
Acest articol se bazează pe Free Code Camp Basic Algorithm Scripting „Title Case a Sentence”.

Dacă aveți propria soluție sau sugestii, împărtășiți-le mai jos în comentarii.

Sau poți să mă urmărești mai departe Mediu, Stare de nervozitate, Github și LinkedIn, imediat după ce faceți clic pe inima verde de mai jos 😉

# StayCurious, # KeepOnHacking & # MakeItHappen!

Resurse aditionale