5 nga mahi uiui a JavaScript: tātari me nga otinga

5 nga mahi uiui a JavaScript: tātari me nga otinga

Mai i te kaiwhakamaori: whakaputaina he tuhinga mo koe Maria Antonietta Perna, e korero ana mo nga mahi JavaScript noa, i te nuinga o nga wa ka tukuna ki nga kaitono kaiwhakawhanake i nga wa e uiui ana. Ka whai hua te tuhinga, tuatahi, ki nga kaiwhakatakoto kaupapa hou.

Ko nga uiuinga ki nga kamupene hangarau kua roa e korerohia ana e te taone nui. Ehara tenei i te mea miharo - ma te pai o te tuku uiui ka whai waahi koe ki te whiwhi mahi pai. Engari ehara tenei i te mea ngawari, na te mea he maha nga wa e tika ana kia whakatauhia nga raru uaua.

I tua atu, i te nuinga o nga wa, ko te nuinga o enei mahi kaore e pa ana ki nga mahi ka mahia e te kaitono, engari me whakatika tonu. I etahi wa me mahi koe i runga i te poari, me te kore e tirotiro ki a Google me tetahi atu puna. Ae, kei te huri haere te ahuatanga, kei te whakarere etahi kamupene i nga uiui penei, engari he maha nga kaituku mahi e mau tonu ana ki tenei tikanga. Ko tenei tuhinga e whakatapua ana ki te tātari i nga mahi a JavaScript e whakamahia ana hei mahi ma te hunga rapu mahi.

Ka whakamahara matou: mo nga kaipānui katoa o "Habr" - he utu mo te 10 rubles i te wa e whakauru ana ki tetahi akoranga Skillbox ma te whakamahi i te waehere whakatairanga "Habr".

Ka tūtohu a Skillbox: Akoranga mahi "Whakawhanake Waea PRO".

Ko te mea nui ko te tino whakarite mo to uiui.

Ae, i mua i te tiimata ki te titiro ki nga mahi, me titiro ki etahi tohutohu whakarite mo te uiui.

Ko te mea nui ko te whakarite i mua. Whakamatauhia te pai o to mahara ki nga algorithms me nga hanganga raraunga, me te whakapai ake i to mohiotanga ki nga waahi kaore koe i tino mohio. He maha nga papaaho ipurangi hei awhina i a koe ki te whakarite mo nga uiui. Ka tohutohu matou geeksforgeeks, Pramp, Uiuitanga.io и TohuTohu.

He pai ki te ako ki te korero nui i te whakatau. He mea tika kia korero ki nga kaitono he aha taau e mahi ana, kaua e tuhi noa ki runga i te papa (me tuhi ranei te waehere ki roto i te rorohiko, me te wahangu ano). I tenei ara, ki te he koe i te waehere, engari he tika te otinga, ka taea e koe te whakanui ake i to tupono ki te angitu.

Me mohio koe ki te raru i mua i to tiimata ki te whakaoti. I etahi wa, ka marama pea koe ki tetahi mahi katahi ka haere ki te ara he. He pai pea te patai i etahi patai whakamarama ki te kai uiui.

Me mahi koe i te tuhi waehere ma te ringaringa, kaua ki te PC. I te wa e uiui ana ka whakawhiwhia ki te kaitono he tohu me te papa ma, kaore he tohu, he whakatakotoranga aunoa ranei. I te wa e rapu ana koe i tetahi otinga, he pai ki te tuhi i to waehere ki runga pepa, ki runga ranei i te papa. Mena kei te pupuri koe i nga mea katoa i roto i to mahunga, ka wareware koe i tetahi mea nui.

Nga mahi tauira i roto i te JavaScript

Ko etahi o enei mahi kua mohio kee koe. Kua whai uiui koe me whakatau koe i tetahi mea penei, me mahi ranei koe i a koe e ako ana i te JavaScript. Ana, kua tae ki te wa ki te whakaoti ano i a raatau, me te whakamaarama taipitopito mo te mahi.

Palindrome

Ko te palindrome he kupu, he rerenga korero, he raupapatanga ranei o nga tohu e rite ana te panui i te huarahi o mua me te huarahi rereke. Hei tauira, ko te "Anna" he paparangi, engari ko "tepu" me "John" ehara.

Atawhai

Ka hoatu he aho; Me tuhi koe i tetahi mahi e taea ai e koe te whakahoki pono mena he palindrome te aho, me te teka ki te kore. I tenei keehi, me whai whakaaro koe ki nga waahi me nga tohu tohu.

palindrome('racecar') === pono
palindrome('ripanga') === teka

Kia wetewetehia te mahi

Ko te whakaaro nui i konei ko te huri i te aho. Mena he rite tonu te aho "whakamuri" ki te aho taketake, kua riro mai he palindrome me te mahi kia hoki pono. Ki te kore, he teka.

whakatau

Anei te waehere hei whakaoti i te 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('')
}

Ko te mahi tuatahi ko te huri i nga tohu o te aho whakauru ki te puiti iti. He kupu taurangi tenei ka whakatauritea e te hotaka nga kiripuaki i a ratou ano, kaua he keehi, he aha atu ranei.

Ko te taahiraa tuarua ko te huri i te raina. Ehara tenei i te mea uaua ki te mahi: me huri koe ki roto i te huranga ma te whakamahi i te tikanga .split() (whare pukapuka aho). Katahi ka whakatakahia te huinga ma te whakamahi i te .reverse() (whare pukapuka Array). Ko te mahi whakamutunga ko te huri i te huānga whakamuri ki te aho ma te whakamahi i te .join() (whare pukapuka huānga).

Ko nga mea katoa e hiahia ana koe ki te whakataurite i te aho "whakamuri" ki te aho taketake, ka whakahoki i te hua he pono, he teka ranei.

FizzBuzz

Ko tetahi o nga mahi tino rongonui i roto i nga uiui.

Atawhai

Me tuhi koe i tetahi taumahi e tarai ana i nga tau mai i te 1 ki te n ki te papatohu, ko te n he tauoti ka tangohia e te mahi hei tawhā, me nga tikanga e whai ake nei:

  • karekau te whakaputa i te taurea o te 3;
  • puta te buzz hei utu mo nga tau he maha o te 5;
  • te whakaputanga fizzbuzz hei utu mo nga tau he taurea o te 3 me te 5.

Hei tauira:

Fizzbuzz(5)

hua

// 1
// 2
// whiti
// 4
//pupuhi

Kia wetewetehia te mahi

Ko te mea nui i konei ko te huarahi ki te kimi taurea ma te whakamahi JavaScript. Ka taea te whakatinana ma te whakamahi i te kaiwhakahaere modulus, te toenga ranei - %, ka taea e koe te whakaatu i te toenga ina wehewehe nga tau e rua. Mena he 0 te toenga, ko te tikanga ko te tau tuatahi he taurea o te tuarua.

12% 5 // 2 -> 12 ehara i te taurea o te 5
12% 3 // 0 -> 12 he maha o te 3

Na, ki te whakawehea e koe te 12 ki te 5, ka whiwhi koe i te 2 me te toenga o te 2. Ki te whakawehea e koe te 12 ki te 3, ka whiwhi koe i te 4 me te toenga o te 0. I te keehi tuatahi, ehara te 12 i te taurea o te 5, kei te tuarua. Ko te 12 he taurea o te 3.

whakatau

Ko te otinga tino pai ko te waehere e whai ake nei:

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

Ka mahia e te mahi nga arowhai e tika ana ma te whakamahi i nga korero herenga me te whakaputa i nga hua e hiahiatia ana e te kaiwhakamahi. I roto i te raruraru, he mea tika kia aro ki te raupapa o nga korero penei: me timata ki te ahua rua (&&) ka mutu ki te keehi kaore i kitea nga nama maha. Ko te mutunga, ka hipokina e matou nga whiringa katoa.

Anagram

Koinei te ingoa o tetahi kupu kei roto nga reta katoa o tetahi atu kupu i te tau kotahi, engari he rereke te raupapa.

Atawhai

Me tuhi he mahi hei tirotiro mena he anagrams nga aho e rua, karekau he aha te take. Ko nga tohu anake ka tatauhia; karekau e whai whakaarotia nga waahi me nga tohu tohu.

anagram('Finder', 'Hoa') —> pono
anagram('hello', 'bye') -> teka

Kia wetewetehia te mahi

Ko te mea nui ki te whakaaro i konei me tirotiro koe i ia reta i roto i nga rarangi whakauru e rua me to raatau nama ki ia rarangi.

kimi —> f: 1 hoa —> f: 1
ahau: 1r:1
n: 1 i: 1
d: 1 e: 1
e: 1n: 1
r: 1 d: 1

Hei rokiroki i nga raraunga anagram, me whiriwhiri koe i tetahi hanganga penei i te tuhinga a JavaScript. Ko te mea nui i tenei keehi ko te ahua o te reta, ko te uara ko te maha o ana tukuruatanga i te rarangi o naianei.

He atu tikanga:

  • Me mohio koe kaore e whakaarohia te keehi o nga reta ina whakataurite. Ka huri noa tatou i nga aho e rua ki te iti, ki runga ranei.
  • Ka whakakorehia e matou nga tohu-kore katoa mai i te whakataurite. He pai ki te mahi tahi whakaaturanga auau.

whakatau

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

Kia tupato ki te whakamahinga Object.keys() i te wahanga o runga. Ko tenei aratuka ka whakahoki i tetahi huānga kei roto nga ingoa, ki nga taviri ranei i roto i te raupapa rite e puta ana i roto i te ahanoa. I tenei keehi ka penei te raupapa:

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

Ma tenei ka whiwhi tatou i nga ahuatanga o te ahanoa me te kore e mahi i te kohanga nui. I tetahi raruraru, ka taea e koe te whakamahi i tenei tikanga me te taonga .length ki te tirotiro mena he rite te maha o nga tohu o nga aho e rua - he ahua nui tenei o nga tohu.

Rapua nga oropuare

He mahi tino ngawari ka puta mai i nga uiuinga.

Atawhai

Me tuhi koe i tetahi mahi ka tango i te aho hei tohenga me te whakahoki i te maha o nga oropuare kei roto i te aho.
Ko nga oro puare he “a”, “e”, “i”, “o”, “u”.

Hei tauira:

findVowels('kia ora') // —> 2
findVowels('he aha') // —> 0

whakatau

Anei te kōwhiringa māmā:

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
}

He mea nui ki te aro ki te whakamahi i te tikanga .includes(). E waatea ana mo nga aho me nga raupapa. Me whakamahi hei whakatau mehemea kei roto i tetahi huānga tetahi uara. Ka hoki mai tenei tikanga ki te pono mena kei roto i te huānga te uara kua tohua, me te teka ki te kore.

He otinga poto ake mo te raru:

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

Ka whakamahi tenei i te tikanga .match(), ka taea e koe te whakatinana i te rapunga pai. Mēnā ka kitea he kīanga auau hei tohenga tikanga i roto i te aho kua tohua, ko te uara whakahoki he huānga o ngā pūāhua ōrite. Ana, ki te kore he whakataetae, ka hoki mai te .match() null.

fibonacci

He mahi matarohia ka kitea i roto i nga uiuinga i nga momo reanga. He mea pai kia maumahara ko te raupapa Fibonacci he raupapa o nga tau kei reira ko ia o muri ko te tapeke o nga rua o mua. Na, penei te ahua o nga nama tekau tuatahi: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Atawhai

Me tuhi koe i tetahi taumahi e whakahoki ai i te rekooti n i roto i tetahi raupapa, me te n ko te tau ka tukuna hei tohenga mo te mahi.

fibonacci(3) // —> 2

Ko tenei mahi ko te haere i roto i te kohanga te maha o nga wa i tohua i roto i te tohenga, me te whakahoki i te uara ki te waahi e tika ana. Ko tenei huarahi ki te whakatau i te raru me whakamahi nga koropiko. Mena ka whakamahi koe i te recursion hei utu, tera pea e pai ki te kair uiui me te hoatu ki a koe etahi tohu taapiri.

whakatau

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

I roto i te rarangi hua, ko nga tau tuatahi e rua kei roto i te raupapa na te mea ko ia urunga ki te raupapa te tapeke o nga tau e rua o mua. I te timatanga karekau he nama e rua ka taea te tango ki te tiki i te tau e whai ake nei, na reira kaore e taea e te kapiti te whakaputa aunoa. Engari, e mohio ana matou, ko nga tau tuatahi e rua ko te 0 me te 1 i nga wa katoa.

Mo te recursion, he ngawari ake nga mea katoa me te uaua i te wa ano:

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

Ka karangahia e matou te fibonacci(), ka tukuna nga nama iti me te iti ake hei tohenga. Ka mutu ka 0, 1 ranei te tautohetohe kua paahitia.

mutunga

Ko te mea pea, kua tupono koe ki tetahi o enei mahi mena kua uiuia koe mo tetahi mahi kaiwhakawhanake JavaScript ranei (ina koa kei te taumata teina). Engari ki te kore koe i kite i a raatau, ka whai hua pea a muri ake nei - mo te whanaketanga whanui.

Ka tūtohu a Skillbox:

Source: will.com

Tāpiri i te kōrero