Trije načini za spreminjanje niza v JavaScript

Ta članek temelji na scenariju Basic Code Camp Algorithm Scripting “Reverse a string”

Spreminjanje niza je eno najpogostejših vprašanj v JavaScript v tehničnem krogu razgovora. Anketarji vas lahko prosijo, da napišete različne načine, kako spremeniti niz, ali pa, da obrnete niz, ne da bi uporabili vgrajene metode, ali pa vas celo prosijo, da obrnete niz z uporabo rekurzije.

To lahko na desetine različnih načinov, razen vgrajene funkcije povratne obrambe, ker je JavaScript nima.

Spodaj so navedeni moji trije najbolj zanimivi načini, kako rešiti težavo z obračanjem niza v JavaScript.

Izziv algoritma

Spremenite določeni niz.

Mogoče boste morali niz spremeniti v matriko, preden jo boste lahko obrnili.

Rezultat mora biti niz.

function reverseString(str) { return str; } reverseString("hello");

Priloženi testni primeri

  • reverseString ("zdravo") bi moral postati "olleh"
  • reverseString (»Howdy«) bi moral postati »ydwoH«
  • reverseString ("Pozdrav z Zemlje") bi moral vrniti "htraE morf sgniteerG"

1. Obrnite niz z vgrajenimi funkcijami

Za to rešitev bomo uporabili tri metode: metodo String.prototype.split (), metodo Array.prototype.reverse () in metodo Array.prototype.join ().

  • Metoda split () razdeli objekt String v niz nizov tako, da loči niz v podnize.
  • Metoda reverse () obrne matriko na njeno mesto. Prvi element matrike postane zadnji, zadnji pa prvi.
  • Metoda join () združi vse elemente polja v niz.
function reverseString(str) { // Step 1. Use the split() method to return a new array var splitString = str.split(""); // var splitString = "hello".split(""); // ["h", "e", "l", "l", "o"] // Step 2. Use the reverse() method to reverse the new created array var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse(); // ["o", "l", "l", "e", "h"] // Step 3. Use the join() method to join all elements of the array into a string var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join(""); // "olleh" //Step 4. Return the reversed string return joinArray; // "olleh" } reverseString("hello");

Povezovanje treh metod skupaj:

function reverseString(str) { return str.split("").reverse().join(""); } reverseString("hello");

2. Povlecite niz z dekretom za zanko

function reverseString(str) { // Step 1. Create an empty string that will host the new created string var newString = ""; // Step 2. Create the FOR loop /* The starting point of the loop will be (str.length - 1) which corresponds to the last character of the string, "o" As long as i is greater than or equals 0, the loop will go on We decrement i after each iteration */ for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; // or newString = newString + str[i]; } /* Here hello's length equals 5 For each iteration: i = str.length - 1 and newString = newString + str[i] First iteration: i = 5 - 1 = 4, newString = "" + "o" = "o" Second iteration: i = 4 - 1 = 3, newString = "o" + "l" = "ol" Third iteration: i = 3 - 1 = 2, newString = "ol" + "l" = "oll" Fourth iteration: i = 2 - 1 = 1, newString = "oll" + "e" = "olle" Fifth iteration: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh" End of the FOR Loop*/ // Step 3. Return the reversed string return newString; // "olleh" } reverseString('hello');

Brez komentarjev:

function reverseString(str) { var newString = ""; for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; } return newString; } reverseString('hello');

3. Obrni niz z rekurzijo

Za to rešitev bomo uporabili dve metodi: metodo String.prototype.substr () in metodo String.prototype.charAt ().

  • Metoda substr () vrne znake v nizu, ki se začne na določenem mestu skozi določeno število znakov.
"hello".substr(1); // "ello"
  • Metoda charAt () vrne podani znak iz niza.
"hello".charAt(0); // "h"

Globina rekurzije je enaka dolžini niza. Ta rešitev ni najboljša in bo res počasna, če je niz zelo dolg in velikost sklada zelo skrbi.

function reverseString(str) { if (str === "") // This is the terminal case that will end the recursion return ""; else return reverseString(str.substr(1)) + str.charAt(0); /* First Part of the recursion method You need to remember that you won’t have just one call, you’ll have several nested calls Each call: str === "?" reverseString(str.subst(1)) + str.charAt(0) 1st call – reverseString("Hello") will return reverseString("ello") + "h" 2nd call – reverseString("ello") will return reverseString("llo") + "e" 3rd call – reverseString("llo") will return reverseString("lo") + "l" 4th call – reverseString("lo") will return reverseString("o") + "l" 5th call – reverseString("o") will return reverseString("") + "o" Second part of the recursion method The method hits the if condition and the most highly nested call returns immediately 5th call will return reverseString("") + "o" = "o" 4th call will return reverseString("o") + "l" = "o" + "l" 3rd call will return reverseString("lo") + "l" = "o" + "l" + "l" 2nd call will return reverserString("llo") + "e" = "o" + "l" + "l" + "e" 1st call will return reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h" */ } reverseString("hello");

Brez komentarjev:

function reverseString(str) { if (str === "") return ""; else return reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Pogojni (ternarni) operater:

function reverseString(str) { return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Obračanje niza v JavaScript je majhen in preprost algoritem, ki ga lahko zahtevate na tehničnem telefonskem pregledu ali tehničnem razgovoru. Lahko rešite to težavo po kratki poti ali pa se lotite pristopa, tako da ga rešite z rekurzijo ali celo bolj zapletenimi rešitvami.

Upam, da se vam je to zdelo koristno. To je del moje serije člankov "Kako rešiti algoritme FCC" o izzivih algoritma Free Code Camp, kjer predlagam več rešitev in po korakih razlagam, kaj se dogaja pod pokrovom.

Trije načini ponovitve niza v JavaScript

V tem članku bom razložil, kako rešiti izziv FreeCodeCampa "Ponovi niz, ponovi niz". To vključuje ...

Dva načina za potrditev konca niza v JavaScript

V tem članku bom razložil, kako rešiti izziv FreeCodeCampa "Potrdi konec".

Trije načini za razčlenitev števila v JavaScript

Ta članek temelji na skriptu »Basic Factorialize a Number«, ki temelji na algoritmu Free Code Camp.

Dva načina za preverjanje palindromov v JavaScript

Ta članek temelji na skriptu »Basic Check Algorithm Scripting« Preveri palindrome ».

Trije načini za iskanje najdaljše besede v nizu v JavaScript

Ta članek temelji na skriptnem scenariju Basic Code Camp Algorithm "Poiščite najdaljšo besedo v nizu".

Trije načini naslova stavka v JavaScript

Ta članek temelji na scenariju Basic Code Camp Algorithm Scripting “Title Case a Sentence”.

Če imate svojo rešitev ali kakršne koli predloge, jih delite spodaj v komentarjih.

Lahko pa me spremljate na Medium , Twitter, Github in LinkedIn , takoj po kliku na zeleno srce spodaj ;-)

# Ostanite radovedni, # KeepOnHacking & # MakeItHappen!

Viri

  • metoda split () - MDN
  • metoda reverse () - MDN
  • metoda join () - MDN
  • Dolžina niza - MDN
  • metoda substr () - MDN
  • metoda charAt () - MDN