5 yakajairika JavaScript yekubvunzurudza mabasa: kuongorora uye mhinduro

5 yakajairika JavaScript yekubvunzurudza mabasa: kuongorora uye mhinduro

Kubva kumushanduri: yakakubudisira chinyorwa Maria Antonietta Perna, anotaura nezve akajairwa JavaScript mabasa, inowanzopihwa kune vanogadzira kunyorera panguva yekubvunzurudzwa. Chinyorwa chacho chichave chinobatsira, chekutanga kune vanotanga programmers.

Kubvunzurudza kumakambani etekinoroji kwagara kuri kutaura kwedhorobha. Izvi hazvifanirwe kushamisa - kubudirira kupasa kubvunzurudza kunokupa mukana wekuwana basa rakanaka. Asi izvi hazvisi nyore, sezvo zvinetso zvakaoma zvinowanzoda kugadziriswa.

Uyezve, kazhinji kazhinji, mazhinji emabasa aya haana hukama nebasa richaitwa nemunyoreri, asi achiri kuda kugadziriswa. Dzimwe nguva unofanirwa kuzviita pabhodhi, pasina kutarisa neGoogle kana chero imwe sosi. Hongu, mamiriro ezvinhu ari kuchinja zvishoma nezvishoma, uye mamwe makambani ari kusiya kubvunzurudza kwakadaro, asi vashandirwi vakawanda vachiri kuomerera kune tsika iyi. Ichi chinyorwa chakazvipira kuongororwa kweakajairika JavaScript mabasa anowanzo shandiswa semabasa kune vanotsvaga basa.

Tinoyeuchidza: kune vese vaverengi veHabr - a 10 ruble mutengo paunenge uchinyoresa mune chero Skillbox kosi uchishandisa iyo Habr promo kodhi.

Skillbox inokurudzira: Nzira inoshanda "Mobile Developer PRO".

Chinhu chikuru ndechokugadzirira zvakakwana kubvunzurudza kwako.

Hongu, tisati tatanga kutarisa mabasa, ngatitarisei mamwe matipi ekugadzirira kubvunzurudza.

Chinhu chikuru ndechokugadzirira mberi. Edza kuti unorangarira sei maalgorithms uye zvimiro zvedata, uye vandudza ruzivo rwako munzvimbo dzausinganyanyi kujaira. Kune akawanda online mapuratifomu anogona kukubatsira kugadzirira kubvunzurudza. Tinopa zano geeksforgeeks, Pram, Interviewing.io и CodeSignal.

Zvakakodzera kudzidza kutaura sarudzo zvinonzwika. Zvinokurudzirwa kuudza vanonyorera nezve zvaunoita, uye kwete kungonyora pabhodhi (kana kunyora kodhi mukombuta, zvakare chinyararire). Nenzira iyi, kana iwe ukakanganisa mukodhi, asi mhinduro yacho kazhinji yakarurama, unogona kuwedzera mikana yako yekubudirira.

Unofanira kunzwisisa dambudziko usati watanga kurigadzirisa. Mune zvimwe zviitiko, unogona kunzwisisa basa nepamusoro-soro uye wobva wadzika nenzira isiri iyo. Zvingave zvakakosha kubvunza mibvunzo mishoma inojekesa kumubvunzurudzo.

Iwe unofanirwa kudzidzira kunyora kodhi neruoko, kwete paPC. Izvo zvinoitika kuti panguva yekubvunzurudza munyoreri anopiwa chiratidzo uye chena bhodhi, uko pasina mazano kana otomatiki fomati. Paunenge uchitsvaga mhinduro, zvakakosha kunyora pasi kodhi yako pabepa kana zvakananga pabhodhi. Kana iwe ukachengeta zvese mumusoro mako, unogona kukanganwa chinhu chakakosha.

Matemplate mabasa muJavaScript

Mamwe emabasa aya angangove atozivikanwa kwauri. Iwe wakambove nebvunzurudzo kwawaifanira kugadzirisa chimwe chinhu chakafanana, kana kudzidzira pairi uchidzidza JavaScript. Zvakanaka, ikozvino yave nguva yekuzvigadzirisa zvakare, uye netsananguro yakadzama yemaitiro.

Palindrome

A palindrome ishoko, mutsara kana kutevedzana kwemavara anoverengwa zvakangofanana munzira yakajairika uye nekumwe divi. Semuenzaniso, "Anna" iPalindrome, asi "tafura" uye "John" hazvisi.

Stage

Kupihwa tambo; unoda kunyora basa rinokubvumira kudzoka kwechokwadi kana tambo iri palindrome, uye yenhema kana isiri. Muchiitiko ichi, unofanirwa kutarisa nzvimbo uye zviratidzo zvepumisikidzo.

palindrome('racecar') === chokwadi
palindrome('tafura') === nhema

Ngationgororei basa racho

Pfungwa huru pano ndeyekudzosera kumashure tambo. Kana "reverse" tambo yakanyatsofanana neyokutanga, saka takagamuchira palindrome uye basa rinofanira kudzoka rechokwadi. Kana zvisina kudaro, nhema.

chisarudzo

Heino kodhi inogadzirisa iyo 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('')
}

Danho rekutanga nderekushandura mavara ari mutambo yekupinza kuita mavara madiki. Ichi chivimbiso chekuti chirongwa chichafananidza mavara ivo pachavo, uye kwete nyaya kana chimwe chinhu.

Nhanho yechipiri ndeyekudzosera kumashure mutsara. Izvi hazvina kuoma kuita: unoda kuishandura kuita hurongwa uchishandisa .split() nzira (String library). Zvadaro tinodzorera shure mutsara tichishandisa .reverse () (Array library). Danho rekupedzisira nderekushandura reverse array kuita tambo uchishandisa .join() (Array library).

Iye zvino zvese zvaunoda kuita kuenzanisa tambo ye "reverse" netambo yekutanga, kudzorera mhedzisiro yechokwadi kana yenhema.

FizzBuzz

Rimwe remabasa anozivikanwa zvikuru mubvunzurudzo.

Stage

Iwe unofanirwa kunyora basa rinodhinda nhamba kubva 1 kusvika n kune koni, uko n iri nhamba inotora basa separameter, ine anotevera mamiriro:

  • kubuda fizz pachinzvimbo chekuwanda kwevatatu;
  • kubuda buzz pachinzvimbo chenhamba dziri kuwanda kwe5;
  • fizzbuzz kubuda pachinzvimbo chenhamba dziri kuwanda kwezvose zviri zviviri 3 na5.

Muenzaniso:

Fizzbuzz(5)

mugumisiro

// 1
// 2
// fizz
// 4
//buzz

Ngationgororei basa racho

Chinhu chikuru apa inzira yekutsvaga akawanda uchishandisa JavaScript. Inogona kuitwa uchishandisa modulus opareta kana yasara - %, iyo inokutendera kuti uratidze zvakasara kana uchipatsanura nhamba mbiri. Kana asara ari 0, zvinoreva kuti nhamba yekutanga ndeyechipiri chechipiri.

12% 5 // 2 -> 12 haisi kuwanda kwe5
12% 3 // 0 -> 12 yakawanda ye3

Saka, ukagovanisa gumi nembiri na 12, unowana 5 neanosara pa 2. Ukakamura gumi nemaviri na2, unowana 12 neanosara pa3. Muchiitiko chekutanga, gumi nemaviri haasi kuwanza pa4, muchipiri. , 0 inowanza ye12.

chisarudzo

Iyo yakakwana mhinduro ingave inotevera kodhi:

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)
    }
  }
}

Basa racho rinoita macheki anodiwa richishandisa zvirevo zvemamiriro uye rinoburitsa mhedzisiro inodiwa nemushandisi. Mune dambudziko, zvakakosha kubhadhara kurongeka kweiyo kana ... zvimwe zvinyorwa: tanga nechimiro cheviri (&&) uye pedzisa nenyaya iyo nhamba dzakawanda hadzina kuwanikwa. Somugumisiro, tinovhara zvose zvingasarudzwa.

Anagram

Iri izita reizwi rine mavara ese erimwe izwi munhamba imwe chete, asi mune imwe hurongwa.

Stage

Tinofanira kunyora basa rinotarisa kana tambo mbiri dziri anagrams, uye nyaya yacho haina basa. Mavara chete ndiwo anoverengwa; nzvimbo kana zviratidzo zvepumikira hazvina kuverengerwa.

anagram('muwani', 'Shamwari') -> chokwadi
anagram('hello', 'bye') -> nhema

Ngationgororei basa racho

Chinhu chakakosha kufunga pano ndechekuti unofanirwa kutarisa tsamba yega yega mumitsara miviri yekupinza uye nhamba yavo mumutsara wega wega.

muwana —> f: 1 shamwari —> f: 1
i:1r:1
n:1 i:1
d:1e:1
e:1 n:1
r:1d:1

Kuti uchengetedze data yeanagram, iwe unofanirwa kusarudza chimiro chakadai seJavaScript chinhu chaicho. Chinokosha munyaya iyi chimiro chetsamba, kukosha ndiyo nhamba yekudzokorora kwayo mumutsara wezvino.

Pane mamwe mamiriro:

  • Iwe unofanirwa kuve nechokwadi chekuti nyaya yetsamba haina kuverengerwa kana uchienzanisa. Tinongoshandura tambo dzose dziri mbiri kuti dzive dzakaderera kana dzepamusoro.
  • Isu tinobvisa vese vasiri mavara kubva pakuenzanisa. Zvakanakisa kushanda nazvo matauriro enguva dzose.

chisarudzo

// 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
}

Teerera kune iko kushandisa Object.keys() muchidimbu chiri pamusoro. Iyi nzira inodzosa rondedzero ine mazita kana makiyi nenzira imwechete yaanoonekwa muchinhu. Muchiitiko ichi, mutsara uchave wakadai:

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

Nenzira iyi tinowana zvimiro zvechinhu pasina kuita bhurawuti yakawanda. Mune dambudziko, unogona kushandisa nzira iyi ne .length property kuti uone kana tambo dzose dzine nhamba yakafanana yezvinyorwa - ichi chinhu chakakosha cheanagrams.

Tsvaga mavhawero

Basa rakareruka rinowanzouya mubvunzurudzo.

Stage

Unoda kunyora basa rinotora tambo senharo uye kudzorera nhamba yemavhawero ari mutambo.
Mavhawero anoti “a”, “e”, “i”, “o”, “u”.

Muenzaniso:

tsvaga mavhawero('hello') // —> 2
tsvaga mavhawero('nei') // -> 0

chisarudzo

Heino sarudzo yakapusa:

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
}

Zvakakosha kubhadhara kushandiswa kwe .includes () nzira. Inowanikwa kune zvese tambo uye arrays. Inofanirwa kushandiswa kuona kana rondedzero ine humwe kukosha. Iyi nzira inodzosa chokwadi kana rondedzero iine kukosha kwakatarwa, uye yenhema kana isina.

Pane mhinduro pfupi kune dambudziko:

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

Izvi zvinoshandisa iyo .match() nzira, iyo inobvumidza iwe kuita tsvakiridzo ine hunyanzvi. Kana chirevo chenguva dzose senharo yenzira chikawanika mukati metambo yataurwa, ukoshi hwekudzoka mutsara wemabhii anofambirana. Zvakanaka, kana pasina machisi, ipapo .match() anodzoka null.

fibonacci

Basa remhando yepamusoro rinogona kuwanikwa mubvunzurudzo pamatanho akasiyana. Zvakakodzera kuyeuka kuti kutevedzana kweFibonacci kutevedzana kwenhamba apo imwe neimwe inotevera iri huwandu hwembiri dzakapfuura. Saka, nhamba gumi dzekutanga dzinotaridzika seizvi: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Stage

Iwe unofanirwa kunyora basa rinodzorera nth rekodhi mune imwe nhevedzano, ine n iri iyo nhamba inopfuudzwa senharo kune basa.

fibonacci(3) // —> 2

Iri basa rinosanganisira kufamba nemuchiuno nhamba yenguva dzakatsanangurwa mugakava, kudzorera kukosha panzvimbo yakakodzera. Iyi nzira yekuisa dambudziko inoda kushandiswa kwezvishwe. Kana ukashandisa recursion pachinzvimbo, zvinogona kufadza mubvunzurudzo uye kukupa mamwe mashoma mapoinzi.

chisarudzo

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]
}

Muchirongwa chemhedzisiro, nhamba mbiri dzekutanga dzirimo munhevedzano nekuti imwe neimwe yekupinda munhevedzano ndiyo nhamba yenhamba mbiri dzapfuura. Pakutanga hapana nhamba mbiri dzinogona kutorwa kuti dzitore nhamba inotevera, saka loop haigone kuigadzira otomatiki. Asi, sezvatinoziva, nhamba mbiri dzekutanga dzinogara dziri 0 uye 1. Nokudaro, unogona kutanga mitsara yemigumisiro nemaoko.

Kana zviri zvekudzokorora, zvese zviri nyore uye zvakanyanya kuomarara panguva imwe chete:

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)
}

Tinoramba tichidaidza fibonacci(), tichipfuura nhamba diki nediki senharo. Isu tinomira apo nharo yakapfuura iri 0 kana 1.

mhedziso

Zvingangodaro, iwe wakatosangana nechero yeaya mabasa kana iwe wakabvunzurudzwa kune yepamberi kana JavaScript yekuvandudza basa (kunyanya kana iri pajunior level). Asi kana usati wasangana nazvo, zvinogona kubatsira mune ramangwana - zvirinani kusimudzira.

Skillbox inokurudzira:

Source: www.habr.com

Voeg