Mesebetsi e 5 e tloaelehileng ea tlhahlobo ea JavaScript: tlhahlobo le tharollo

Mesebetsi e 5 e tloaelehileng ea tlhahlobo ea JavaScript: tlhahlobo le tharollo

Ho tsoa ho mofetoleli: e u hatisitse sengoloa Maria Antonietta Perna, ea buang ka mesebetsi e tloaelehileng ea JavaScript, hangata e fuoa bakopi ba nts'etsopele nakong ea lipuisano. Sengoliloeng se tla ba molemo, pele ho tsohle, ho baetsi ba mananeo a qalang.

Lipuisano tsa lik'hamphani tsa theknoloji e se e le khale e le puo ea toropo. Sena ha sea lokela ho makatsa - ho fetisa lipuisano ka katleho ho u fa monyetla oa ho fumana mosebetsi o motle. Empa sena ha se bonolo hakaalo, kaha hangata mathata a rarahaneng a hloka ho rarolloa.

Ho feta moo, hangata, boholo ba mesebetsi ena ha e amane le mosebetsi oo mokopi a tla o etsa, empa e ntse e hloka ho rarolloa. Ka linako tse ling u tlameha ho e etsa ka boto, ntle le ho hlahloba le Google kapa mohloli ofe kapa ofe. E, boemo bo ntse bo fetoha butle-butle, 'me lik'hamphani tse ling li tlohela lipuisano tse joalo, empa bahiri ba bangata ba ntse ba khomarela moetlo ona. Sengoliloeng sena se etselitsoe tlhahlobo ea mesebetsi e tloaelehileng ea JavaScript eo hangata e sebelisoang e le mesebetsi ea batho ba batlang mosebetsi.

Re hopotsa: bakeng sa babali bohle ba "Habr" - theolelo ea li-ruble tse 10 ha u ngolisa thupelong efe kapa efe ea Skillbox u sebelisa khoutu ea papatso ea "Habr".

Skillbox e khothaletsa: Tsela e sebetsang "Mobile Developer PRO".

Ntho ea bohlokoa ke ho itokisetsa ka botlalo lipuisano tsa hau.

Ee, pele re qala ho sheba mesebetsi, ha re shebeng malebela a mang a kakaretso a ho itokisetsa lipuisano.

Ntho e ka sehloohong ke ho itokisetsa esale pele. Lekola hore na u hopola li-algorithms le libopeho tsa data hantle hakae, 'me u ntlafatse tsebo ea hau libakeng tseo u sa li tloaelang haholo. Ho na le liforomo tse ngata tsa marang-rang tse ka u thusang ho itokisetsa lipuisano. Re eletsa li-geeksforgeeks, Seqhomane, Interviewing.io и CodeSignal.

Ke habohlokoa ho ithuta ho bua qeto ka lentsoe le phahameng. Ho bohlokoa ho bolella bakopi ka seo u se etsang, eseng feela ho ngola botong (kapa u thaepe khoutu ka har'a komporo, hape u khutsitse). Ka tsela ena, haeba u etsa phoso ka khoutu, empa tharollo ka kakaretso e nepahetse, u ka eketsa menyetla ea hau ea katleho.

U lokela ho utloisisa bothata pele u qala ho bo rarolla. Maemong a mang, u ka 'na ua utloisisa mosebetsi ka holimo feela, ebe u ea tseleng e fosahetseng. Ho ka 'na ha e-ba molemo ho botsa lipotso tse seng kae tse hlakisang motho ea botsang lipotso.

U hloka ho itloaetsa ho ngola khoutu ka letsoho, eseng ka PC. Hoa etsahala hore nakong ea lipuisano mokopi a fuoe letšoao le letlapa le lesoeu, moo ho se nang lintlha kapa ho fomata ka mokhoa o itekanetseng. Ha u batla tharollo, ho bohlokoa ho ngola khoutu ea hau pampiring kapa ka ho toba botong. Haeba u boloka ntho e 'ngoe le e' ngoe hloohong ea hau, u ka 'na ua lebala ntho ea bohlokoa.

Mesebetsi ea template ho JavaScript

E meng ea mesebetsi ena mohlomong u se u ntse u e tseba. Mohlomong u bile le lipuisano moo u ileng ua tlameha ho rarolla ntho e tšoanang, kapa ua itloaetsa ho tsona ha u ntse u ithuta JavaScript. Joale, ke nako ea ho li rarolla hape, 'me ka tlhaloso e qaqileng ea ts'ebetso.

Palindrome

Palindrome ke lentsoe, polelo kapa tatellano ea litlhaku tse baloang ka mokhoa o ts'oanang ka tsela e tloaelehileng le ka nqa e fapaneng. Mohlala, "Anna" ke palindrome, empa "tafole" le "John" ha li joalo.

Boemo

Ho fanoe ka khoele; o hloka ho ngola mosebetsi o u lumellang hore u khutlele 'nete haeba khoele e le palindrome,' me e le leshano haeba ho se joalo. Tabeng ena, o lokela ho ela hloko libaka le matšoao a matšoao.

palindrome('racecar') === nnete
palindrome('tafole') === bohata

A re hlahlobeng mosebetsi

Taba ea mantlha mona ke ho khutlisetsa khoele morao. Haeba khoele ea "reverse" e ts'oana ka botlalo le ea pele, joale re fumane palindrome mme mosebetsi o lokela ho khutla e le 'nete. Haeba ho se joalo, ke leshano.

u etsa qeto ea

Mona ke khoutu e rarollang palindrome.

const palindrome = str => {
  // turn the string to lowercase
  str = str.toLowerCase()
  // reverse input string and return the result of the
  // comparisong
  return str === str.split('').reverse().join('')
}

Mohato oa pele ke ho fetolela litlhaku tse khoeleng ea ho kenya hore e be litlhaku tse tlase. Ena ke tiisetso ea hore lenaneo le tla bapisa litlhaku ka bobona, eseng nyeoe kapa ntho leha e le efe e 'ngoe.

Mohato oa bobeli ke ho khutlisa mola. Sena ha se thata ho se etsa: o hloka ho se fetolela ho sehlopha ka ho sebelisa mokhoa oa .split() (String library). Ebe re khutlisa sehlopha ka ho sebelisa .reverse() (Array library). Mohato oa ho qetela ke ho fetolela lethathamo le ka morao ho khoele u sebelisa .join() (Array library).

Hona joale sohle seo u lokelang ho se etsa ke ho bapisa khoele ea "reverse" le khoele ea pele, ho khutlisetsa sephetho sa 'nete kapa bohata.

FizzBuzz

E 'ngoe ea mesebetsi e tsebahalang haholo lipuisanong.

Boemo

U hloka ho ngola mosebetsi o hatisang linomoro ho tloha ho 1 ho ea ho n ho console, moo n e leng palo e feletseng eo mosebetsi o e nkang e le parameter, ka maemo a latelang:

  • output fizz ho e-na le li-multiples tsa 3;
  • tlhahiso buzz ho e-na le linomoro tse mengata ea 5;
  • fizzbuzz output sebakeng sa linomoro tseo e leng li-multiples tsa 3 le 5.

Mohlala:

Fizzbuzz(5)

sephetho

// 1
// 2
// fetsa
// 4
//buzz

A re hlahlobeng mosebetsi

Ntho ea bohlokoa mona ke mokhoa oa ho fumana li-multiples u sebelisa JavaScript. E ka kenngoa ts'ebetsong ka ho sebelisa mochine oa modulus kapa karolo e setseng - %, e leng se u lumellang hore u bontše se setseng ha u arola linomoro tse peli. Haeba karolo e setseng e le 0, ho bolela hore nomoro ea pele ke palo ea bobeli.

12% 5 // 2 -> 12 ha se bongata ba 5
12% 3 // 0 -> 12 e ngata ho 3

Kahoo, ha o arola 12 ka 5, o fumana 2 ka ho sala 2. Ha o arola 12 ka 3, o fumana 4 ka karolo e setseng ea 0. Tabeng ea pele, 12 ha se palo ea 5, ea bobeli. , 12 ke palo e ngata ea 3.

u etsa qeto ea

Tharollo e nepahetseng e tla ba khoutu e latelang:

const fizzBuzz = num => {
  for(let i = 1; i <= num; i++) {
    // check if the number is a multiple of 3 and 5
    if(i % 3 === 0 && i % 5 === 0) {
      console.log('fizzbuzz')
    } // check if the number is a multiple of 3
      else if(i % 3 === 0) {
      console.log('fizz')
    } // check if the number is a multiple of 5
      else if(i % 5 === 0) {
      console.log('buzz')
    } else {
      console.log(i)
    }
  }
}

Mosebetsi o etsa licheke tse hlokahalang o sebelisa lipolelo tse nang le maemo 'me o hlahisa sephetho se hlokoang ke mosebedisi. Bothateng, ho bohlokoa ho ela hloko taelo ea haeba ... ho seng joalo: qala ka boemo bo habeli (&&) 'me u qetelle ka nyeoe eo linomoro tse ngata li sa fumaneheng. Ka lebaka leo, re koahela likhetho tsohle.

Anagram

Lena ke lebitso la lentsoe le nang le litlhaku tsohle tsa lentsoe le leng ka palo e tšoanang, empa ka tatellano e fapaneng.

Boemo

Re hloka ho ngola mosebetsi o hlahlobang hore na likhoele tse peli ke li-anagrams, 'me nyeoe ha e na taba. Ho baloa litlhaku feela; dibaka kapa matshwao a puo ha a hlokomeloe.

anagram('finder', 'Friend') -> 'nete
anagram('hello', 'bye') -> bohata

A re hlahlobeng mosebetsi

Ntho ea bohlokoa eo u lokelang ho e nahana mona ke hore u lokela ho hlahloba tlhaku e 'ngoe le e' ngoe meleng e 'meli ea ho kenya le palo ea eona moleng o mong le o mong.

mofuputsi —> f: 1 motsoalle —> f: 1
ke:1r:1
n:1 i:1
d:1 e:1
e:1n:1
r:1 d:1

Ho boloka data ea anagram, o lokela ho khetha sebopeho se kang ntho ea JavaScript ka ho toba. Ntho ea bohlokoa tabeng ena ke sebopeho sa lengolo, boleng ke palo ea ho pheta-pheta ha eona molaong oa hona joale.

Ho na le maemo a mang:

  • U lokela ho etsa bonnete ba hore taba ea mangolo ha e nkoe ha e bapisoa. Re fetolela likhoele ka bobeli hore e be litlhaku tse tlase kapa tse holimo.
  • Ha re kenyeletse batho bohle bao e seng litlhaku papisong. Molemo ka ho fetisisa ho sebetsa le lipolelo tse tloaelehileng.

u etsa qeto ea

// helper function that builds the
// object to store the data
const buildCharObject = str => {
  const charObj = {}
  for(let char of str.replace(/[^w]/g).toLowerCase()) {
    // if the object has already a key value pair
    // equal to the value being looped over,
    // increase the value by 1, otherwise add
    // the letter being looped over as key and 1 as its value
    charObj[char] = charObj[char] + 1 || 1
  }
  return charObj
}
 
// main function
const anagram = (strA, strB) => {
  // build the object that holds strA data
  const aCharObject = buildCharObject(strA)
  // build the object that holds strB data
  const bCharObject = buildCharObject(strB)
 
  // compare number of keys in the two objects
  // (anagrams must have the same number of letters)
  if(Object.keys(aCharObject).length !== Object.keys(bCharObject).length) {
    return false
  }
  // if both objects have the same number of keys
  // we can be sure that at least both strings
  // have the same number of characters
  // now we can compare the two objects to see if both
  // have the same letters in the same amount
  for(let char in aCharObject) {
    if(aCharObject[char] !== bCharObject[char]) {
      return false
    }
  }
  // if both the above checks succeed,
  // you have an anagram: return true
  return true
}

Ela hloko tšebeliso Object.linotlolo() moqotsong o ka hodimo. Mokhoa ona o khutlisa lethathamo le nang le mabitso kapa linotlolo ka tatellano e tšoanang le eo li hlahang ho eona. Tabeng ena, moralo o tla ba tjena:

['f', 'ke', 'n', 'd', 'e', ​​'r']

Ka tsela ena re fumana thepa ea ntho ntle le ho etsa loop e ngata. Bothateng, u ka sebelisa mokhoa ona ka thepa ea .length ho hlahloba hore na likhoele tse peli li na le palo e lekanang ea litlhaku - ena ke tšobotsi ea bohlokoa ea li-anagrams.

Batla liluma-nosi

Mosebetsi o bonolo o atisang ho hlaha lipuisanong.

Boemo

U hloka ho ngola tšebetso e nkang khoele e le khang le ho khutlisa palo ea liluma-nosi tse teng khoeleng.
Liluma-nosi ke “a”, “e”, “i”, “o”, “u”.

Mohlala:

fumana Liluma-nosi('hello') // —> 2
fumana Liluma-nosi('hobane'ng') // —> 0

u etsa qeto ea

Khetho e bonolo ke ena:

const findVowels = str => {
  let count = 0
  const vowels = ['a', 'e', 'i', 'o', 'u']
  for(let char of str.toLowerCase()) {
    if(vowels.includes(char)) {
      count++
    }
  }
  return count
}

Ho bohlokoa ho ela hloko tšebeliso ea mokhoa oa .includes(). E fumaneha bakeng sa likhoele ka bobeli le li-arrays. E lokela ho sebelisoa ho fumana hore na sehlopha se na le boleng bo itseng. Mokhoa ona o khutlisa 'nete haeba pokello e na le boleng bo boletsoeng, 'me e fosahetse haeba e se na eona.

Ho na le tharollo e khuts'oane ea bothata:

const findVowels = str => {
  const matched = str.match(/[aeiou]/gi)
  return matched ? matches.length : 0
}

Sena se sebelisa mokhoa oa .match(), o u lumellang ho kenya ts'ebetsong patlisiso e nepahetseng. Haeba polelo e tloaelehileng e le khang ea mokhoa e fumanoa ka har'a thapo e boletsoeng, boleng ba ho khutlisa ke mefuta e mengata ea litlhaku tse tsamaellanang. Ha e le hantle, haeba ho se na lipapali, joale .match() e khutlisa null.

Fibonacci

Mosebetsi oa khale o ka fumanoang lipuisanong tsa maemo a fapaneng. Ke habohlokoa ho hopola hore tatellano ea Fibonacci ke letoto la linomoro moo e 'ngoe le e' ngoe e latelang e leng kakaretso ea tse peli tse fetileng. Kahoo, lipalo tse leshome tsa pele li shebahala tjena: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Boemo

U hloka ho ngola mosebetsi o khutlisetsang rekoto ea nth ka tatellano e itseng, 'me n e le palo e fetisitsoeng e le khang ea mosebetsi.

fibonacci(3) // —> 2

Mosebetsi ona o kenyelletsa ho tsamaea ka loop palo ea linako tse boletsoeng khang, ho khutlisetsa boleng sebakeng se loketseng. Mokhoa ona oa ho hlahisa bothata o hloka tšebeliso ea li-loops. Haeba u sebelisa recursion ho e-na le hoo, e ka khahlisa motho ea botsang lipotso le ho u fa lintlha tse 'maloa tse eketsehileng.

u etsa qeto ea

const fibonacci = num => {
  // store the Fibonacci sequence you're going
  // to generate inside an array and
  // initialize the array with the first two
  // numbers of the sequence
  const result = [0, 1]
 
  for(let i = 2; i <= num; i++) {
    // push the sum of the two numbers
    // preceding the position of i in the result array
    // at the end of the result array
    const prevNum1 = result[i - 1]
    const prevNum2 = result[i - 2]
    result.push(prevNum1 + prevNum2)
  }
  // return the last value in the result array
  return result[num]
}

Ka lethathamo la liphetho, lipalo tse peli tsa pele li teng letotong hobane keno e 'ngoe le e' ngoe ka tatellano ke kakaretso ea linomoro tse peli tse fetileng. Qalong haholo ha ho na linomoro tse peli tse ka nkoang ho fumana nomoro e latelang, kahoo loop e ke ke ea li hlahisa ka bo eona. Empa, joalo ka ha re tseba, linomoro tse peli tsa pele li lula li le 0 le 1. Ka hona, o ka qala lethathamo la liphetho ka letsoho.

Ha e le ho khutlela morao, ntho e 'ngoe le e' ngoe e bonolo ebile e rarahane ka nako e le 'ngoe:

const fibonacci = num => {
  // if num is either 0 or 1 return num
  if(num < 2) {
    return num
  }
  // recursion here
  return fibonacci(num - 1) + fibonacci(num - 2)
}

Re lula re bitsa fibonacci(), re fetisa linomoro tse nyane le tse nyane joalo ka likhang. Re emisa ha khang e fetileng e le 0 kapa 1.

fihlela qeto e

Mohlomong u se u kile ua kopana le e 'ngoe ea mesebetsi ena haeba u kile ua botsoa lipotso bakeng sa mosebetsi oa pele kapa oa JavaScript (haholo-holo haeba o le boemong bo tlaase). Empa haeba ha o so kopane le tsona, li ka ba molemo nakong e tlang - bonyane bakeng sa nts'etsopele e akaretsang.

Skillbox e khothaletsa:

Source: www.habr.com

Eketsa ka tlhaloso