Imisebenzi emi-5 yodliwano-ndlebe eqhelekileyo yeJavaScript: uhlalutyo kunye nezisombululo

Imisebenzi emi-5 yodliwano-ndlebe eqhelekileyo yeJavaScript: uhlalutyo kunye nezisombululo

Isuka kumguquleli: ukupapashele inqaku UMaria Antonietta Perna, othetha ngemisebenzi eqhelekileyo yeJavaScript, idla ngokunikezelwa kubafaki-zicelo abaphuhlisi ngexesha lodliwano-ndlebe. Inqaku liya kuba luncedo, okokuqala, kubadwelisi benkqubo abaqalayo.

Udliwano-ndlebe kwiinkampani zetekhnoloji kudala yaba yintetho yedolophu. Oku akufanele kumangalise - ukuphumelela udliwano-ndlebe ngempumelelo kukunika ithuba lokufumana umsebenzi olungileyo. Kodwa oku akuyondlwan’ iyanetha, ekubeni iingxaki ezintsonkothileyo zidla ngokufuna ukusonjululwa.

Ngaphezu koko, amaxesha amaninzi, uninzi lwale misebenzi ayinxulumananga nomsebenzi oza kwenziwa ngumfaki-sicelo, kodwa kusafuneka isonjululwe. Ngamanye amaxesha kufuneka uyenze ebhodini, ngaphandle kokujonga ngeGoogle okanye nawuphi na umthombo. Ewe, imeko iyatshintsha ngokuthe ngcembe, kwaye ezinye iinkampani zishiya udliwano-ndlebe olunjalo, kodwa abaqeshi abaninzi basabambelele kwesi siko. Eli nqaku linikezelwe kuhlalutyo lwemisebenzi yeJavaScript eqhelekileyo edla ngokusetyenziswa njengemisebenzi yabantu abafuna umsebenzi.

Siyakhumbuza: kubo bonke abafundi be "Habr" - isaphulelo se-ruble ye-10 xa ubhalisa kuyo nayiphi na ikhosi ye-Skillbox usebenzisa ikhowudi yokuphromotha "Habr".

I-Skillbox iyacebisa: Ikhosi esebenzayo "UMqulunqi we-PRO".

Into ephambili kukulungiselela kakuhle udliwano-ndlebe lwakho.

Ewe, phambi kokuba siqale ukujonga imisebenzi, makhe sijonge iingcebiso zokulungiselela udliwano-ndlebe ngokubanzi.

Into ephambili kukulungiselela kwangaphambili. Vavanya ukuba uzikhumbula kakuhle kangakanani ii-algorithms kunye nolwakhiwo lwedatha, kwaye uphucule ulwazi lwakho kwiindawo ongaziqhelanga kakhulu. Maninzi amaqonga e-intanethi anokukunceda ulungiselele udliwano-ndlebe. Siyacebisa IiGeeksforGeeks, Iprampu, Udliwano-ndlebe.io и IkhowudiSignal.

Kufanelekile ukufunda ukuthetha isigqibo ngokuvakalayo. Kuyacetyiswa ukuba uxelele abafaki zicelo malunga nento oyenzayo, kwaye ungabhali nje ebhodini (okanye uchwetheze ikhowudi kwikhompyuter, nangokuthula). Ngale ndlela, ukuba wenza iphutha kwikhowudi, kodwa isisombululo sichanekile ngokubanzi, unokwandisa amathuba akho okuphumelela.

Kufuneka uqonde ingxaki ngaphambi kokuba uqalise ukuyicombulula. Kwezinye iimeko, unokuwuqonda umsebenzi ngokuthe ngqo kwaye emva koko uhambe ngendlela engalunganga. Kusenokuba kufanelekile ukubuza imibuzo embalwa ecacisayo kudliwano-ndlebe.

Kufuneka uziqhelanise nekhowudi yokubhala ngesandla, hayi kwiPC. Kwenzeka ukuba ngexesha lodliwano-ndlebe umenzi-sicelo unikwe umakishi kunye nebhodi emhlophe, apho kungekho macebiso okanye ukufomatha ngokuzenzekelayo. Xa ufuna isisombululo, kuyafaneleka ukubhala phantsi ikhowudi yakho ephepheni okanye ngqo ebhodini. Ukuba ugcina yonke into entloko yakho, unokulibala into ebalulekileyo.

Imisebenzi yetemplate kwiJavaScript

Eminye yale misebenzi mhlawumbi sele uqhelene nawe. Mhlawumbi ukhe waba nodliwano-ndlebe apho kuye kwafuneka ukuba usombulule into efanayo, okanye uziqhelanise nalo ngelixa ufunda iJavaScript. Ewe, ngoku lixesha lokuzisombulula kwakhona, kunye nenkcazo ecacileyo yenkqubo.

I-Palindrome

I-palindrome ligama, isivakalisi okanye ukulandelelana koonobumba abafundeka ngokufanayo ngendlela eqhelekileyo nakwicala elichaseneyo. Umzekelo, "u-Anna" yi-palindrome, kodwa "itafile" kunye no "John" akunjalo.

Ukuqokelela

Unikwe umtya; kufuneka ubhale umsebenzi okuvumela ukuba ubuyele kwinyani ukuba umtya yi palindrome, kwaye bubuxoki ukuba akunjalo. Kule meko, kufuneka uthathele ingqalelo izithuba kunye neziphumlisi.

palindrome('racecar') === yinyani
palindrome('itafile') === bubuxoki

Makhe sihlalutye umsebenzi

Ingcamango ephambili apha kukubuyisela umva umtya. Ukuba umtya "wokubuyela umva" ufana ngokupheleleyo nowokuqala, ngoko sifumene i-palindrome kwaye umsebenzi kufuneka ubuyele inyaniso. Ukuba akunjalo, bubuxoki.

Isisombululo

Nantsi ikhowudi esombulula i-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('')
}

Inyathelo lokuqala kukuguqula abalinganiswa kumtya wegalelo kwityala elisezantsi. Esi sisiqinisekiso sokuba inkqubo iya kuthelekisa abalinganiswa ngokwabo, kwaye kungekhona imeko okanye nantoni na enye.

Inyathelo lesibini kukubuyisela umva umgca. Oku akunzima ukwenza: kufuneka uyiguqule ibeluluhlu usebenzisa i .split () indlela (ithala leencwadi). Emva koko sibuyisela umva uluhlu sisebenzisa .reverse() (Array library). Inyathelo lokugqibela kukuguqula uluhlu olubuyela umva lube ngumtya usebenzisa .join() (Array library).

Ngoku konke okufuneka ukwenze kukuthelekisa umtya othi "reverse" kunye nomtya wokuqala, ubuyisela umphumo oyinyani okanye ubuxoki.

FizzBuzz

Omnye wemisebenzi ethandwa kakhulu kudliwano-ndlebe.

Ukuqokelela

Kufuneka ubhale umsebenzi oshicilela amanani ukusuka ku-1 ukuya ku-n ukuya kwiconsole, apho u-n yinani elipheleleyo elithathwa ngumsebenzi njenge parameter, enemiqathango elandelayo:

  • i-output fizz endaweni yophindaphindo lwesi-3;
  • i-output buzz endaweni yamanani aziphindaphindwe ngo-5;
  • imveliso yefizzbuzz endaweni yamanani aziziphindwayo zombini u-3 no-5.

Umzekelo:

I-Fizzbuzz(5)

Isiphumo

// 1
// 2
// iqhosha
// 4
//buzz

Makhe sihlalutye umsebenzi

Eyona nto iphambili apha yindlela yokufumana iziphindaphindo usebenzisa iJavaScript. Inokusetyenziswa kusetyenziswa umsebenzisi wemodyuli okanye intsalela - %, ekuvumela ukuba ubonise intsalela xa usahlula amanani amabini. Ukuba intsalela ngu-0, oko kuthetha ukuba inani lokuqala liphindwaphindwa lwesibini.

I-12% 5 // 2 -> i-12 ayiphindi isi-5
I-12% 3 // 0 -> i-12 iphinda-phinda isi-3

Ngoko ke, ukuba wahlulahlula u-12 ngo-5, ufumana u-2 ngentsalela ka-2. Ukuba wahlula-hlula u-12 ngo-3, ufumana u-4 ngentsalela ka-0. Kwimeko yokuqala, u-12 akaphindi ka-5, okwesibini. , i-12 luphinda-phindo lwesi-3.

Isisombululo

Esona sisombululo siya kuba yile khowudi ilandelayo:

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

Umsebenzi wenza iitshekhi eziyimfuneko usebenzisa iinkcazo ezinemiqathango kwaye uvelise umphumo ofunwa ngumsebenzisi. Kwingxaki, kuyafaneleka ukunikela ingqalelo kumyalelo wokuba ... ezinye izitatimenti: qalisa ngemeko ephindwe kabini (&&) kwaye uphele ngemeko apho amanani amaninzi awazange afumaneke. Ngenxa yoko, sigubungela zonke iinketho.

Anagram

Eli ligama legama eliqulethe bonke oonobumba belinye igama abakwinani elifanayo, kodwa ngendlela eyahlukileyo.

Ukuqokelela

Kufuneka sibhale umsebenzi ojonga ukuba imitya emibini i-anagrams, kwaye imeko ayinamsebenzi. Ngabalinganiswa kuphela ababalwayo; izithuba okanye iziphumlisi azithathelwa ngqalelo.

anagram('finder', 'Friend') -> yinyani
anagram('molo', 'bye') -> bubuxoki

Makhe sihlalutye umsebenzi

Into ebalulekileyo ekufuneka uyiqwalasele apha kukuba kufuneka ujonge unobumba ngamnye kwimigca emibini yokufaka kunye nenani labo kumgca ngamnye.

umfumani —> f: 1 umhlobo —> f: 1
mna:1r:1
n: 1 mna:1
d: 1 e: 1
e: 1n: 1
r: 1d: 1

Ukugcina idatha ye-anagram, kufuneka ukhethe isakhiwo esinje ngeJavaScript into engokoqobo. Isitshixo kule meko ngumlingiswa weleta, ixabiso linani lokuphindaphinda kwalo kumgca wangoku.

Kukho ezinye iimeko:

  • Kufuneka uqinisekise ukuba imeko yeeleta ayithathelwa ngqalelo xa uthelekisa. Simane siguqulela omabini imitya ibe ngonobumba osezantsi okanye aphezulu.
  • Asibandakanyi bonke abangabalinganiswa kuthelekiso. Eyona nto ingcono ukusebenza nayo iintetho eziqhelekileyo.

Isisombululo

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

Nika ingqalelo ekusetyenzisweni Into.izitshixo() kwisiqwengana esingasentla. Le ndlela ibuyisela uluhlu oluqulathe amagama okanye izitshixo ngendlela efanayo avela ngayo kwinto. Kule meko uluhlu luya kuba ngolu hlobo:

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

Ngale ndlela sifumana iimpawu zento ngaphandle kokwenza iluphu eninzi. Kwingxaki, ungasebenzisa le ndlela ngepropathi .ubude ukujonga ukuba zombini iintambo zinenani elifanayo lamagama - oku kuyimpawu ebalulekileyo ye-anagrams.

Khangela izikhamiso

Umsebenzi olula ngokufanelekileyo odla ngokuvela kudliwano-ndlebe.

Ukuqokelela

Kufuneka ubhale umsebenzi othatha umtya njengengxabano kwaye ubuyisele inani lezikhamiso eziqulethwe kumtya.
Izikhamiso ngu-“a”, “e”, “i”, “o”, “u”.

Umzekelo:

fumana izikhamiso('molo') // —> 2
fumana izikhamiso('kutheni') // —> 0

Isisombululo

Nalu olona khetho lulula:

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
}

Kubalulekile ukunikela ingqalelo ekusetyenzisweni kwe-.ibandakanya () indlela. Iyafumaneka kuzo zombini iintambo kunye nemigangatho. Kufuneka isetyenziswe ukumisela ukuba uluhlu luqulathe ixabiso elithile. Le ndlela ibuyisela inyani ukuba uluhlu luqulathe ixabiso elichaziweyo, kwaye bubuxoki ukuba akunjalo.

Kukho isisombululo esifutshane kule ngxaki:

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

Oku kusebenzisa indlela .match (), ekuvumela ukuba uphumeze uphendlo olusebenzayo. Ukuba intetho eqhelekileyo njengengxoxo yendlela ifunyanwa ngaphakathi komtya okhankanyiweyo, ngoko ixabiso lokubuyisela luludwe lwamagama ahambelanayo. Kulungile, ukuba akukho matshisi, ngoko .match() ibuyisela null.

Fibonacci

Umsebenzi weklasikhi onokufumaneka kudliwano-ndlebe kumanqanaba ahlukeneyo. Kuyafaneleka ukukhumbula ukuba ulandelelwano lweFibonacci luluhlu lwamanani apho nganye elandelayo iyisimbuku seesibini zangaphambili. Ngoko ke, amanani alishumi okuqala akhangeleka ngolu hlobo: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Ukuqokelela

Kufuneka ubhale umsebenzi obuyisela irekhodi ye-nth kulandelelwano oluthile, kunye no-n ibe linani eligqithisiweyo njengengxabano kumsebenzi.

fibonacci(3) // —> 2

Lo msebenzi ubandakanya ukuhamba nge-loop inani lamaxesha achazwe kwingxoxo, ukubuyisela ixabiso kwindawo efanelekileyo. Le ndlela yokubeka ingxaki ifuna ukusetyenziswa kweelophu. Ukuba usebenzisa i-recursion endaweni yoko, inokukholisa udliwano-ndlebe kwaye ikunike amanqaku ongezelelweyo ambalwa.

Isisombululo

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

Kuluhlu lweziphumo, amanani amabini okuqala aqulethwe kuthotho kuba ingeniso nganye ngokulandelelanayo isixa samanani amabini adlulileyo. Kwasekuqaleni akukho manani mabini anokuthathwa ukufumana inani elilandelayo, ngoko ke iluphu ayinakuwavelisa ngokuzenzekelayo. Kodwa, njengoko sisazi, amanani amabini okuqala ahlala e-0 kunye no-1. Ngoko ke, ungaqalisa uluhlu lweziphumo ngesandla.

Ngokuphathelele ukuphindaphinda, yonke into ilula kwaye inzima ngaxeshanye:

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

Sihlala sibiza i-fibonacci (), sigqithisa amanani amancinci kunye namancinci njengeengxabano. Siyayeka xa ingxabano epasisiweyo ingu-0 okanye u-1.

isiphelo

Okunokwenzeka, sele udibane nayo nayiphi na le misebenzi ukuba ubunodliwano-ndlebe lwe-frontend okanye umsebenzi womphuhlisi weJavaScript (ingakumbi ukuba ukwinqanaba elisezantsi). Kodwa ukuba awudibananga nazo, zinokuba luncedo kwixesha elizayo-ubuncinci kuphuhliso jikelele.

I-Skillbox iyacebisa:

umthombo: www.habr.com

Yongeza izimvo