1 dec. 2015

Inversarea unui șir in JavaScript

Reverse a string in JS este una dintre cele mai comune exerciții propuse începătorilor și se folosește de obicei pentru a verifica dacă un text este palindrom. Treaba asta se rezolvă foarte repede apelând la trio-ul .split(), .reverse() și .join().

Rezultatul rulării codului este !srotnî uif ăs uaerV și pare destul de evident de ce, la prima vedere: o despărțire, o inversare și o unire...ce-i așa de special? Hai să luăm fiecare metodă în parte să vedem cum funcționează și ce chestii tari am mai putea face.

String.split(separator, limită)
Tot ceea ce face .split() este să împartă un string într-un array de string-uri. Parametrii sunt opționali însă cu ei putem profita la maxim de această metodă.

  • Separatorul îl alegem în funcție de string-ul pe care vrem să îl despărțim (putem da ca separator un spațiu, o virgulă, etc). Dacă nu specificăm separatorul, metoda va returna șirul inițial, iar dacă separatorul este specificat ca un string gol, va fi returnat un array conținând fiecare caracter din șirul inițial. 
  • Prin limită specificăm primele câte split-uri să fie returnate.

Exemplul de mai sus poate fi executat și modificat aici

Array.reverse()
O metodă fără parametrii, .reverse() inversează elementele array-ului specificat. Spre deosebire de .split() care returnează un array de elemente lasând string-ul inițial intact, metoda .reverse() modifică array-ul și îl returnează ca referință!

Faptul că rezultatul este transmis prin referință poate creea surprize. În exemplul de mai jos putem observa cum variablia care reține rezultatul apelului .reverse() se modifică când array-ul este adus la forma lui inițială.


Exemplul de mai sus poate fi executat și modificat aici

Nu vreau să spun că .reverse() este o metodă periculoasă, însă personal aș evita să fac astfel de atribuiri. Am un array de inversat? Aplic direct pe el .reverse() și totul este ok.

Array.join(separator)
Asemănător cu .split(), doar că această metodă unește toate elementele unui array. Parametrul separator este opțional și specifică prin ce să fie separat fiecare element al array-ului. Dacă nu specificați separatorul elementele vor fi separate cu o virgulă după unire, iar dacă separatorul este un string gol elementele vor fi unite fără a fi separate.


Exemplul de mai sus poate fi executat și modificat aici


0 comentarii:

Trimiteți un comentariu