Ntchito 5 zoyeserera za JavaScript: kusanthula ndi mayankho

Ntchito 5 zoyeserera za JavaScript: kusanthula ndi mayankho

Kuchokera kwa womasulira: adakupatsirani nkhani Maria Antonietta Perna, yemwe amalankhula za JavaScript wamba ntchito, yomwe nthawi zambiri imaperekedwa kwa omwe amafunsira mapulogalamu panthawi yofunsa mafunso. Nkhaniyi idzakhala yothandiza, choyamba, kwa oyambitsa mapulogalamu a novice.

Zoyankhulana pamakampani aukadaulo zakhala nkhani yayikulu mtawuniyi. Izi siziyenera kukhala zodabwitsa - kupambana bwino kuyankhulana kumakupatsani mwayi wopeza ntchito yabwino. Koma izi sizophweka, chifukwa mavuto ovuta nthawi zambiri amafunika kuthetsedwa.

Komanso, nthawi zambiri, zambiri mwa ntchitozi sizikhudzana ndi ntchito yomwe wopemphayo angagwire, koma amafunikabe kuthetsedwa. Nthawi zina muyenera kuchita pa bolodi, osayang'ana ndi Google kapena gwero lina lililonse. Inde, zinthu zikusintha pang'onopang'ono, ndipo makampani ena akusiya zoyankhulana zoterezi, koma olemba ntchito ambiri amatsatirabe mwambo umenewu. Nkhaniyi yaperekedwa pakuwunika kwanthawi zonse ntchito za JavaScript zomwe zimagwiritsidwa ntchito ngati ntchito kwa ofuna ntchito.

Tikukukumbutsani: kwa owerenga onse a Habr - kuchotsera ma ruble 10 polembetsa maphunziro aliwonse a Skillbox pogwiritsa ntchito nambala yotsatsira ya Habr.

Skillbox imalimbikitsa: Njira yothandiza "Mobile Developer PRO".

Chinthu chachikulu ndikukonzekera bwino kuyankhulana kwanu.

Inde, tisanayambe kuyang'ana ntchito, tiyeni tiwone malangizo ena okonzekera kuyankhulana.

Chinthu chachikulu ndicho kukonzekera pasadakhale. Yesani momwe mumakumbukira bwino ma aligorivimu ndi kapangidwe ka data, ndikusintha chidziwitso chanu m'malo omwe simukuwadziwa bwino. Pali nsanja zambiri zapaintaneti zomwe zingakuthandizeni kukonzekera zoyankhulana. Timalangiza geeksforgeeks, Pompano, Interviewing.io и KodiSignal.

Ndikoyenera kuphunzira kunena chigamulo mokweza. Ndikoyenera kuuza ofunsira zomwe mukuchita, osati kungolemba pa bolodi (kapena lembani kachidindo mu kompyuta, komanso mwakachetechete). Mwanjira iyi, ngati mulakwitsa mu code, koma yankho ndilolondola, mukhoza kuwonjezera mwayi wanu wopambana.

Muyenera kumvetsetsa vuto musanayambe kulithetsa. Nthawi zina, mutha kumvetsetsa ntchito mwachiphamaso ndiyeno kupita njira yolakwika. Kungakhale koyenera kufunsa mafunso angapo omveka bwino kwa wofunsayo.

Muyenera kuyeseza kulemba kachidindo ndi dzanja, osati pa PC. Zimachitika kuti panthawi yofunsa mafunso wopemphayo amapatsidwa chikhomo ndi bolodi loyera, pomwe palibe malingaliro kapena masanjidwe odziwikiratu. Mukafuna yankho, ndi bwino kulemba code yanu papepala kapena pa bolodi. Ngati musunga chilichonse m'mutu mwanu, mutha kuyiwala china chake chofunikira.

Ntchito zama template mu JavaScript

Zina mwa ntchitozi mwina mumazidziwa kale. Mwina mudakhalapo ndi zoyankhulana zomwe mudayenera kuthana nazo, kapena mwayesererapo mukuphunzira JavaScript. Chabwino, tsopano ndi nthawi yoti muwathetsenso, ndi kufotokozera mwatsatanetsatane ndondomekoyi.

Palindrome

Palindrome ndi liwu, chiganizo kapena kutsatizana kwa zilembo zomwe zimawerengedwa chimodzimodzi momwe zimakhalira komanso mbali ina. Mwachitsanzo, "Anna" ndi palindrome, koma "tebulo" ndi "John" si.

Zovuta

Kupatsidwa chingwe; muyenera kulemba ntchito yomwe imakulolani kuti mubwererenso zoona ngati chingwecho ndi palindrome, ndi zabodza ngati ayi. Pankhaniyi, muyenera kuganizira mipata ndi zizindikiro zopumira.

palindrome('racecar') === zoona
palindrome('table') === zabodza

Tiyeni tiwunikenso ntchitoyo

Lingaliro lalikulu apa ndikutembenuza chingwe. Ngati chingwe cha "reverse" chikufanana kwathunthu ndi choyambirira, ndiye kuti talandira palindrome ndipo ntchitoyo iyenera kubwereranso yowona. Ngati sichoncho, zabodza.

chisankho

Nayi code yomwe imathetsa 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('')
}

Chinthu choyamba ndikusintha zilembo zomwe zili mu chingwe cholowetsa kuti zikhale zochepa. Ichi ndi chitsimikizo kuti pulogalamuyi idzafanizitsa otchulidwa okha, osati mlandu kapena china chirichonse.

Gawo lachiwiri ndikutembenuza mzerewo. Izi sizovuta kuchita: muyenera kusintha kukhala gulu pogwiritsa ntchito njira ya .split() (String library). Kenako timatembenuza gululo pogwiritsa ntchito .reverse() (Array library). Gawo lomaliza ndikutembenuza gulu losinthira kukhala chingwe pogwiritsa ntchito .join() (Array library).

Tsopano zomwe muyenera kuchita ndikufanizira chingwe cha "reverse" ndi chingwe choyambirira, kubwezera zotsatirazo kukhala zoona kapena zabodza.

FizzBuzz

Imodzi mwa ntchito zodziwika kwambiri muzoyankhulana.

Zovuta

Muyenera kulemba ntchito yomwe imasindikiza manambala kuyambira 1 mpaka n kupita ku kontrakitala, pomwe n ndi nambala yomwe ntchitoyi imatenga ngati parameter, ndi izi:

  • fizz yotulutsa m'malo mochulukitsa 3;
  • mawu otulutsa m'malo mwa manambala omwe amachulukitsa 5;
  • fizzbuzz output m'malo mwa manambala omwe ali ochulukitsa a 3 ndi 5.

Chitsanzo:

Zovuta (5)

chifukwa

// Kukondwerera
// Kukondwerera
// zikomo
// Kukondwerera
//buzu

Tiyeni tiwunikenso ntchitoyo

Chinthu chachikulu apa ndi njira yopezera ma multiples pogwiritsa ntchito JavaScript. Itha kukhazikitsidwa pogwiritsa ntchito modulus opareta kapena yotsalira - %, yomwe imakupatsani mwayi wowonetsa zotsalira pogawa manambala awiri. Ngati yotsalayo ndi 0, zikutanthauza kuti nambala yoyamba ndi yochulukitsa yachiwiri.

12% 5 // 2 -> 12 si kuchuluka kwa 5
12% 3 // 0 -> 12 ndi kuchuluka kwa 3

Choncho, ngati mugawa 12 ndi 5, mumapeza 2 ndi 2 yotsala ya 12. Ngati mutagawa 3 ndi 4, mupeza 0 ndi 12 yotsalira. , 5 ndi kuchuluka kwa 12.

chisankho

Yankho labwino kwambiri lingakhale code iyi:

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

Ntchitoyi imayang'ana zofunikira pogwiritsa ntchito ziganizo zokhazikika ndipo imapanga zotsatira zomwe wogwiritsa ntchito akufuna. Pavutoli, ndi bwino kumvetsera dongosolo la ngati ... ziganizo zina: yambani ndi chikhalidwe chachiwiri (&&) ndikumaliza ndi nkhani yomwe manambala angapo sanapezeke. Chifukwa chake, timapereka zosankha zonse.

Anagram

Ili ndi dzina la liwu lomwe lili ndi zilembo zonse za liwu lina mu nambala yofanana, koma mosiyanasiyana.

Zovuta

Muyenera kulemba ntchito yomwe imayang'ana ngati zingwe ziwiri zili ma anagram, ndipo vuto lilibe kanthu. Makhalidwe okha ndi omwe amawerengedwa; mipata kapena zizindikiro zopumira sizimaganiziridwa.

anagram('finder', 'Bwenzi') -> zoona
anagram('hello', 'bye') -> zabodza

Tiyeni tiwunikenso ntchitoyo

Chofunika kuganizira apa ndikuti muyenera kuyang'ana chilembo chilichonse mumizere iwiri yolowetsamo ndi nambala yake pamzere uliwonse.

wopeza —> f: 1 bwenzi —> f: 1
ine: 1:1
n:1 ndi 1
d:1 ndi:1
ndi: 1n1
ndi: 1d:1

Kuti musunge data ya anagram, muyenera kusankha mawonekedwe ngati JavaScript yeniyeni. Chinsinsi pa nkhaniyi ndi khalidwe la kalatayo, mtengo wake ndi chiwerengero cha kubwereza kwake mu mzere wamakono.

Pali zinthu zina:

  • Muyenera kuonetsetsa kuti nkhani ya makalata sichikuganiziridwa poyerekezera. Timangotembenuza zingwe zonse ziwiri kukhala zotsika kapena zazikulu.
  • Timapatula onse osakhala zilembo pakuyerekeza. Zabwino kwambiri kugwira nawo ntchito mawu okhazikika.

chisankho

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

Samalani kugwiritsa ntchito Object.keys() m'chidule pamwambapa. Njirayi imabweza mndandanda womwe uli ndi mayina kapena makiyi momwe amawonekera pachinthucho. Pankhani iyi, mndandanda udzakhala motere:

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

Mwanjira iyi timapeza zinthu za chinthucho popanda kuchita zambiri. Pavuto, mungagwiritse ntchito njirayi ndi katundu wa .length kuti muwone ngati zingwe zonse zili ndi chiwerengero chofanana cha zilembo - ichi ndi chinthu chofunika kwambiri cha anagrams.

Sakani mavawelo

Ntchito yophweka yomwe nthawi zambiri imabwera muzoyankhulana.

Zovuta

Muyenera kulemba ntchito yomwe imatenga chingwe ngati mkangano ndikubwezera chiwerengero cha mavawelo omwe ali mu chingwecho.
Mavawelo ndi “a”, “e”, “i”, “o”, “u”.

Chitsanzo:

kupeza Mavawelo('hello') // —> 2
kupeza Mavawelo('why') // —> 0

chisankho

Nayi njira yosavuta:

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
}

Ndikofunika kulabadira kugwiritsa ntchito njira ya .includes(). Imapezeka pazingwe zonse ndi magulu. Iyenera kugwiritsidwa ntchito kudziwa ngati gulu lili ndi mtengo wina. Njirayi imabwereranso ngati gululo lili ndi mtengo womwe watchulidwa, ndipo zabodza ngati sichoncho.

Pali njira yayifupi yothetsera vutoli:

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

Izi zimagwiritsa ntchito njira ya .match(), yomwe imakupatsani mwayi wofufuza bwino. Ngati mawu okhazikika monga mtsutso wa njira akupezeka mkati mwa chingwe chomwe chatchulidwa, ndiye kuti mtengo wobwezera ndi mndandanda wa zilembo zofananira. Chabwino, ngati palibe machesi, ndiye .match() kubwerera null.

fibonacci

Ntchito yapamwamba yomwe ingapezeke muzoyankhulana pamagulu osiyanasiyana. Ndikoyenera kukumbukira kuti kutsatizana kwa Fibonacci ndi manambala angapo pomwe chotsatira chilichonse chimakhala kuchuluka kwa ziwiri zam'mbuyomu. Choncho, manambala khumi oyambirira amawoneka motere: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Zovuta

Muyenera kulemba ntchito yomwe imabweza mbiri ya nth muzotsatira zina, ndi n kukhala nambala yomwe imaperekedwa ngati mkangano ku ntchitoyo.

fibonacci(3) // —> 2

Ntchitoyi ikuphatikizapo kuyenda mozungulira chiwerengero cha nthawi zomwe zafotokozedwa muzokambirana, kubwezera mtengo pamalo oyenera. Njira iyi yowonetsera vutoli imafuna kugwiritsa ntchito malupu. Ngati mugwiritsa ntchito recursion m'malo mwake, zitha kukondweretsa wofunsayo ndikukupatsani mfundo zingapo zowonjezera.

chisankho

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

Muzotsatira, manambala awiri oyambirira ali mu mndandanda chifukwa cholowa chilichonse muzotsatira ndi chiwerengero cha manambala awiri apitawo. Pachiyambi pomwe palibe manambala awiri omwe angatengedwe kuti apeze nambala yotsatira, kotero kuti kuzungulira sikungathe kuzipanga zokha. Koma, monga tikudziwira, manambala awiri oyambirira nthawi zonse amakhala 0 ndi 1. Choncho, mukhoza kuyambitsa mndandanda wa zotsatira pamanja.

Ponena za kubwereza, zonse zimakhala zosavuta komanso zovuta nthawi imodzi:

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

Timangoyimbabe fibonacci(),kudutsa manambala ang'onoang'ono ndi ang'onoang'ono ngati mikangano. Timayima pamene mkangano wodutsa ndi 0 kapena 1.

Pomaliza

Mwachiwonekere, mwakumanapo kale ndi iliyonse mwa ntchito izi ngati mwafunsidwa kuti mugwire ntchito yakutsogolo kapena JavaScript (makamaka ngati ili pamlingo wocheperako). Koma ngati simunakumanepo nazo, zitha kukhala zothandiza m'tsogolo - makamaka pakukula kwachitukuko.

Skillbox imalimbikitsa:

Source: www.habr.com

Kuwonjezera ndemanga