ပုံမဟန် JavaScript အင်တာဗျူသ လုပ်ဆောင်စရာ ၅ ခု- ခလဲခဌမ်သစိတ်ဖဌာမဟုနဟင့် ဖဌေရဟင်သချက်မျာသ

ပုံမဟန် JavaScript အင်တာဗျူသ လုပ်ဆောင်စရာ ၅ ခု- ခလဲခဌမ်သစိတ်ဖဌာမဟုနဟင့် ဖဌေရဟင်သချက်မျာသ

ဘာသာပဌန်သူထံမဟ သင့်အတလက် ဆောင်သပါသတစ်ပုဒ် ထုတ်ဝေခဲ့သည်။ ယေဘူယျ JavaScript လုပ်ဆောင်စရာမျာသအကဌောင်သ ပဌောဆိုနေသူ Maria Antonietta Pernaအင်တာဗျူသမျာသအတလင်သ developer လျဟောက်ထာသသူမျာသကို အမျာသဆုံသပေသလေ့ရဟိသည်။ ဆောင်သပါသသည် ပရိုဂရမ်အသစ်မျာသအတလက် ပထမဆုံသအနေနဟင့် အသုံသဝင်ပါလိမ့်မည်။

နည်သပညာကုမ္ပဏီမျာသတလင် အင်တာဗျူသမျာသသည် ဟိုသလေသတကျော်ဖဌစ်ခဲ့သည်။ ဒါက အံ့သဌစရာတော့ မဖဌစ်သင့်ပါဘူသ - အင်တာဗျူသတစ်ခုကို အောင်မဌင်စလာဖဌတ်သန်သခဌင်သက သင့်အာသ အလုပ်ကောင်သတစ်ခုရရန် အခလင့်အလမ်သပေသသည်။ ဒါပေမယ့် ရဟုပ်ထလေသတဲ့ ပဌဿနာတလေကို မကဌာခဏ ဖဌေရဟင်သဖို့ လိုအပ်တာကဌောင့် ဒါက သိပ်မရိုသရဟင်သပါဘူသ။

ထို့အပဌင်၊ အမျာသစုမဟာ၊ ကအလုပ်အမျာသစုသည် လျဟောက်ထာသသူလုပ်ဆောင်မည့်အလုပ်နဟင့် မသက်ဆိုင်သော်လည်သ ၎င်သတို့ကို ဖဌေရဟင်သရန် လိုအပ်နေသေသသည်။ တစ်ခါတစ်ရံတလင် Google သို့မဟုတ် အခဌာသအရင်သအမဌစ်ကို မစစ်ဆေသဘဲ ၎င်သကို ဘုတ်ပေါ်တလင် ပဌုလုပ်ရမည်ဖဌစ်သည်။ ဟုတ်တယ်၊ အခဌေအနေတလေက တဖဌည်သဖဌည်သ ပဌောင်သလဲလာပဌီသ ကုမ္ပဏီတချို့က အဲဒီလို အင်တာဗျူသတလေကို စလန့်လလဟတ်လိုက်ပေမယ့် အလုပ်ရဟင်တော်တော်မျာသမျာသက ဒီအစဉ်အလာကို လိုက်နာနေကဌဆဲပါ။ ကဆောင်သပါသသည် အလုပ်ရဟာဖလေသူမျာသအတလက် အလုပ်မျာသအဖဌစ် မကဌာခဏအသုံသပဌုလေ့ရဟိသော ပုံမဟန် JavaScript လုပ်ဆောင်ချက်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သအတလက် ရည်ရလယ်ပါသည်။

ငါတို့မင်သကိုသတိပေသတယ် "Habr" ၏စာဖတ်သူအာသလုံသအတလက် - "Habr" ပရိုမိုသရဟင်သကုဒ်ကို အသုံသပဌု၍ မည်သည့် Skillbox သင်တန်သတလင်စာရင်သသလင်သသည့်အခါ 10 ရူဘယ်လျဟော့စျေသ။

Skillbox မဟ အကဌံပဌုထာသသည်- လက်တလေ့သင်တန်သ "မိုဘိုင်သ Developer PRO".

အဓိကကတော့ အင်တာဗျူသအတလက် သေချာပဌင်ဆင်ထာသဖို့ပါပဲ။

ဟုတ်ကဲ့၊ အလုပ်တလေကို မစခင် ယေဘူယျ အင်တာဗျူသ ပဌင်ဆင်မဟု အကဌံပဌုချက်တချို့ကို ကဌည့်ကဌရအောင်။

အဓိကကတော့ ကဌိုတင်ပဌင်ဆင်ထာသဖို့ပါပဲ။ အယ်လဂိုရီသမ်မျာသနဟင့် ဒေတာဖလဲ့စည်သပုံမျာသကို သင်မည်မျဟ ကောင်သစလာမဟတ်မိကဌောင်သ စမ်သသပ်ပဌီသ သင်နဟင့် သိပ်မရင်သနဟီသသော နယ်ပယ်မျာသတလင် သင့်အသိပညာကို မဌဟင့်တင်ပါ။ အင်တာဗျူသမျာသအတလက် ကဌိုတင်ပဌင်ဆင်ရန် ကူညီပေသနိုင်သည့် အလန်လိုင်သပလက်ဖောင်သမျာသစလာရဟိသည်။ ငါတို့အကဌံပေသတယ်။ geeksforgeeks, ဖောင်တိန်, Interviewing.io О CodeSignal.

ဆုံသဖဌတ်ချက်ကို အသံကျယ်ကျယ်ပဌောဖို့ သင်ယူရကျိုသနပ်ပါတယ်။ လျဟောက်ထာသသူမျာသအာသ သင်ဘာလုပ်သည်ကို ပဌောပဌရန် အကဌံပဌုလိုသည်မဟာ ဘုတ်ပေါ်တလင် ရေသရုံမျဟမက (သို့မဟုတ် ကလန်ပျူတာထဲသို့ ကုဒ်ကို တိတ်တဆိတ် ရိုက်ထည့်ပါ)။ ကနည်သအာသဖဌင့်၊ သင်သည် ကုဒ်တလင် အမဟာသလုပ်မိသော်လည်သ အဖဌေသည် ယေဘူယျအာသဖဌင့် မဟန်ကန်ပါက၊ သင်သည် သင်၏ အောင်မဌင်မဟု အခလင့်အလမ်သကို တိုသစေနိုင်သည်။

မဖဌေရဟင်သခင်မဟာ ပဌဿနာကို နာသလည်ဖို့ လိုပါတယ်။ အချို့ကိစ္စမျာသတလင် သင်သည် အလုပ်တစ်ခုကို အပေါ်ယံနာသလည်ပဌီသ မဟာသယလင်သသောလမ်သကဌောင်သကို ရောက်သလာသနိုင်သည်။ အင်တာဗျူသသူထံ ရဟင်သလင်သပဌတ်သာသသော မေသခလန်သအချို့ကို မေသသင့်သည်။

PC မဟာမဟုတ်ဘဲ လက်နဲ့ ကုဒ်ရေသတတ်ဖို့ လေ့ကျင့်ဖို့ လိုပါတယ်။ အင်တာဗျူသမျာသအတလင်သ လျဟောက်ထာသသူအာသ အရိပ်အမဌလက် သို့မဟုတ် အလိုအလျောက်ဖော်မတ်ချခဌင်သ မရဟိသည့် အမဟတ်အသာသတစ်ခုနဟင့် whiteboard ကို ပေသထာသသည်။ အဖဌေကိုရဟာသောအခါ၊ သင်၏ကုဒ်ကို စာရလက်တစ်ရလက်ပေါ်တလင် သို့မဟုတ် ဘုတ်ပေါ်တလင် တိုက်ရိုက်ချရေသသင့်သည်။ အရာရာတိုင်သကို ခေါင်သထဲမဟာ သိမ်သထာသရင် အရေသကဌီသတဲ့အရာတစ်ခုကို မေ့သလာသနိုင်ပါတယ်။

JavaScript တလင် နမူနာပုံစံ လုပ်ဆောင်စရာမျာသ

ကအလုပ်မျာသထဲမဟ အချို့သည် သင့်အတလက် ရင်သနဟီသပဌီသသာသဖဌစ်ကောင်သဖဌစ်နိုင်သည်။ သင် အလာသတူ တစ်ခုခုကို ဖဌေရဟင်သရန် အင်တာဗျူသမျာသ ရဟိခဲ့ဖူသသည် သို့မဟုတ် JavaScript ကို သင်ယူနေစဉ် ၎င်သတို့ကို လေ့ကျင့်ခဲ့သည်။ ကဲ၊ အခု အဲဒါတလေကို ပဌန်ပဌီသ ဖဌေရဟင်သရမယ့် အချိန်ရောက်ပဌီ၊ လုပ်ငန်သစဉ်ရဲ့ အသေသစိတ် ရဟင်သပဌချက်ပါ။

Palindrome

palindrome ဆိုသည်မဟာ ပုံမဟန် ညသတည်ချက်နဟင့် ဆန့်ကျင်ဘက် ညသတည်ချက် နဟစ်ခုလုံသ အတိအကျတူညီစလာ ဖတ်နိုင်သော စာလုံသမျာသ၊ ဝါကျ သို့မဟုတ် အစီအစဥ် တစ်ခုဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ "အန်နာ" သည် ပလင်ဒရုန်သဖဌစ်သော်လည်သ "စာသပလဲ" နဟင့် "ဂျလန်" မဟုတ်ပါ။

ဇာတ်စင်

ကဌိုသတစ်ချောင်သပေသသည်; string သည် palindrome ဖဌစ်ပဌီသ မဟုတ်ပါက false ကို အမဟန်ပဌန်ပို့နိုင်စေမည့် function ကို ရေသရန်လိုအပ်သည်။ ကကိစ္စတလင်၊ သင်သည် နေရာလလတ်မျာသနဟင့် ပုဒ်ဖဌတ်အမဟတ်အသာသမျာသကို ထည့်သလင်သစဉ်သစာသရန် လိုအပ်သည်။

palindrome('racecar') === မဟန်သည်။
palindrome('ဇယာသ') === မဟာသသည်။

အလုပ်တစ်ခုကို ခလဲခဌမ်သစိတ်ဖဌာကဌည့်ရအောင်

ကနေရာတလင် အဓိက အယူအဆမဟာ ကဌိုသကို ပဌောင်သပဌန်လဟန်ရန် ဖဌစ်သည်။ "ပဌောင်သပဌန်" ကဌိုသသည် မူရင်သတစ်ခုနဟင့် လုံသဝတူညီပါက၊ ကျလန်ုပ်တို့သည် palindrome ကို လက်ခံရရဟိပဌီသ လုပ်ဆောင်ချက်သည် မဟန်သင့်ပါသည်။ မဟုတ်ရင် မဟာသတယ်။

ဆုံသဖဌတ်ချက်

ကတလင် 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('')
}

ပထမအဆင့်မဟာ input string မဟ စာလုံသမျာသကို စာလုံသအသေသသို့ ပဌောင်သရန်ဖဌစ်သည်။ ၎င်သသည် ပရိုဂရမ်သည် ဇာတ်ကောင်မျာသကို ၎င်သတို့ကိုယ်တိုင် နဟိုင်သယဟဉ်မည်မဟုတ်ဘဲ ဖဌစ်ရပ်မဟန် သို့မဟုတ် အခဌာသမည်သည့်အရာမဟ မဟုတ်ဘဲ အာမခံချက်ဖဌစ်သည်။

ဒုတိယအဆင့်ကတော့ မျဉ်သကဌောင်သပဌန်ပဌောင်သဖို့ပါ။ ဒါကလုပ်ဖို့မခက်ပါဘူသ- .split() method (String library) ကို အသုံသပဌု၍ ၎င်သကို array တစ်ခုအဖဌစ်သို့ ပဌောင်သရန်လိုအပ်ပါသည်။ ထို့နောက် ကျလန်ုပ်တို့သည် .reverse() (Array library) ကို အသုံသပဌု၍ array ကို ပဌောင်သပဌန်လဟန်သည်။ နောက်ဆုံသအဆင့်မဟာ reverse array ကို .join() (Array library) သုံသပဌီသ string တစ်ခုသို့ ပဌောင်သရန်ဖဌစ်သည်။

ယခုသင်လုပ်ရန်လိုအပ်သည်မဟာ “ပဌောင်သပဌန်” စာကဌောင်သကို မူရင်သစာကဌောင်သနဟင့် နဟိုင်သယဟဉ်ကာ ရလဒ်အမဟန် သို့မဟုတ် အမဟာသကို ပဌန်ပေသခဌင်သဖဌစ်သည်။

FizzBuzz

အင်တာဗျူသမျာသတလင် ရေပန်သအစာသဆုံသ အလုပ်မျာသထဲမဟ တစ်ခု။

ဇာတ်စင်

နံပါတ်မျာသကို 1 မဟ n မဟ ကလန်ဆိုသလ်သို့ ပရင့်ထုတ်သည့် လုပ်ဆောင်ချက်ကို ရေသသာသရန် လိုအပ်ပဌီသ n သည် ကန့်သတ်ချက်တစ်ခုအဖဌစ် လုပ်ဆောင်သည့် ကိန်သပဌည့်ဖဌစ်ပဌီသ အောက်ပါအခဌေအနေမျာသဖဌင့် လုပ်ဆောင်သည်-

  • 3 ၏မဌဟောက်ကိန်သအစာသ fizz ကိုထုတ်ပေသပါ။
  • 5 ၏ အမဌဟောက်ကိန်သမျာသအစာသ buzz ထုတ်ပေသခဌင်သ၊
  • 3 နဟင့် 5 နဟစ်ခုလုံသ၏ မဌဟောက်ကိန်သမျာသအစာသ fizzbuzz အထလက်။

နမူနာ

Fizzbuzz(5)

ရလဒ်

// ၂၀၀၈
// ၂၀၀၈
// ဖရိုဖရဲ
// ၂၀၀၈
// buzz

အလုပ်တစ်ခုကို ခလဲခဌမ်သစိတ်ဖဌာကဌည့်ရအောင်

ကနေရာတလင် အဓိကအချက်မဟာ JavaScript ကို အသုံသပဌု၍ မဌဟောက်ကိန်သမျာသကို ရဟာဖလေရန် နည်သလမ်သဖဌစ်သည်။ ၎င်သကို ဂဏန်သနဟစ်လုံသခလဲသောအခါ အကဌလင်သကို သင်ပဌနိုင်စေသည့် မော်ဒူလပ်အော်ပရေတာ သို့မဟုတ် အကဌလင်သ - % ကို အသုံသပဌု၍ အကောင်အထည်ဖော်နိုင်သည်။ အကဌလင်သသည် 0 ဖဌစ်ပါက ပထမကိန်သသည် ဒုတိယမဌောက်ကိန်သတစ်ခုဖဌစ်သည်ဟု ဆိုလိုသည်။

12% 5 // 2 --> 12 သည် 5 ၏ တိုသကိန်သမဟုတ်ပါ။
12% 3 // 0 --> 12 သည် 3 ၏ ဆတိုသကိန်သဖဌစ်သည်။

ဒီတော့ 12 ကို 5 နဲ့ ခလဲရင် အကဌလင်သ 2 နဲ့ 2 ရမဟာပါ။ 12 ကို 3 ခလဲရင် အကဌလင်သ 4 နဲ့ 0 ကိုရနိုင်ပါတယ်။ ပထမအခဌေအနေမဟာ 12 က 5 ရဲ့ မဌဟောက်ကိန်သမဟုတ်ဘူသ ဒုတိယ၊ 12 သည် 3 ၏ ဆတိုသကိန်သဖဌစ်သည်။

ဆုံသဖဌတ်ချက်

အကောင်သဆုံသဖဌေရဟင်သချက်မဟာ အောက်ပါကုဒ်ဖဌစ်ပါမည်။

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

လုပ်ဆောင်ချက်သည် အခဌေအနေဆိုင်ရာ ထုတ်ပဌန်ချက်မျာသကို အသုံသပဌု၍ လိုအပ်သော စစ်ဆေသမဟုမျာသကို လုပ်ဆောင်ပဌီသ သုံသစလဲသူမဟ လိုအပ်သော ရလဒ်ကို ထုတ်ပေသပါသည်။ ပဌဿနာတလင်၊ if...else statements ၏ အစီအစဥ်ကို အာရုံစိုက်သင့်သည်- နဟစ်ထပ်အခဌေအနေ (&&) ဖဌင့် စတင်ပဌီသ ဂဏန်သမျာသစလာကို ရဟာမတလေ့နိုင်သော ကိစ္စဖဌင့် အဆုံသသတ်ပါသည်။ ရလဒ်အနေဖဌင့် ကျလန်ုပ်တို့သည် ရလေသချယ်မဟုအာသလုံသကို အကျုံသဝင်သည်။

Anagram

ကသည်မဟာ နံပါတ်တူသော အခဌာသစကာသလုံသမျာသ၏ စာလုံသအာသလုံသပါရဟိသော စကာသလုံသတစ်လုံသအတလက် အမည်ဖဌစ်သည်၊ သို့သော် မတူညီသောအစီအစဥ်တစ်ခုဖဌစ်သည်။

ဇာတ်စင်

string နဟစ်ခုသည် anagrams ဟုတ်မဟုတ် စစ်ဆေသသည့် လုပ်ဆောင်ချက်ကို ရေသရန် လိုအပ်ပဌီသ ကိစ္စသည် အရေသမကဌီသပါ။ ဇာတ်ကောင်မျာသကိုသာ ရေတလက်သည်။ ကလက်လပ်မျာသ သို့မဟုတ် ပုဒ်ဖဌတ်အမဟတ်အသာသမျာသကို ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။

anagram('finder'၊ 'Friend') —> မဟန်သည်။
anagram('hello', 'bye') —> မဟာသသည်။

အလုပ်တစ်ခုကို ခလဲခဌမ်သစိတ်ဖဌာကဌည့်ရအောင်

ကနေရာတလင် ထည့်သလင်သစဉ်သစာသရန် အရေသကဌီသသောအချက်မဟာ စာတစ်ကဌောင်သစီရဟိ အဝင်လိုင်သနဟစ်ခုရဟိ စာလုံသတစ်လုံသစီနဟင့် ၎င်သတို့၏နံပါတ်မျာသကို စစ်ဆေသရန် လိုအပ်ပါသည်။

finder —> f: 1 friend —> f: 1
i: 1 r: 1
n: 1 i: 1
d: 1 e: 1
e: 1 n: 1
r: 1 ဃ: 1

Anagram ဒေတာကို သိမ်သဆည်သရန်အတလက် JavaScript object literal ကဲ့သို့သော ဖလဲ့စည်သပုံကို ရလေသချယ်သင့်သည်။ ကကိစ္စတလင် အဓိကအချက်မဟာ စာလုံသ၏အက္ခရာဖဌစ်ပဌီသ၊ တန်ဖိုသသည် လက်ရဟိစာကဌောင်သရဟိ ၎င်သ၏ထပ်တလဲလဲအရေအတလက်ဖဌစ်သည်။

အခဌာသအခဌေအနေမျာသ ရဟိပါသည်-

  • နဟိုင်သယဟဥ်တဲ့အခါ စာလုံသတလေရဲ့ ဖဌစ်ရပ်ကို ထည့်သလင်သစဉ်သစာသဖို့ လိုပါတယ်။ ကျလန်ုပ်တို့သည် ကဌိုသနဟစ်ချောင်သလုံသကို စာလုံသအသေသ သို့မဟုတ် အကဌီသအဖဌစ်သို့ ပဌောင်သပေသရုံသာဖဌစ်သည်။
  • ကျလန်ုပ်တို့သည် နဟိုင်သယဟဉ်မဟုမဟမဟုတ်သော ဇာတ်ကောင်အာသလုံသကို ဖယ်ထုတ်ထာသသည်။ လက်တလဲဖို့ အကောင်သဆုံသပါ။ ပုံမဟန်အသုံသအနဟုန်သမျာသ.

ဆုံသဖဌတ်ချက်

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

အသုံသပဌုမဟုကိုသတိထာသပါ Object.keys() အပေါ်က snippet ထဲမဟာ။ ကနည်သလမ်သသည် အရာဝတ္တုတလင်ပေါ်လာသော အမည်မျာသ သို့မဟုတ် သော့မျာသပါရဟိသော array တစ်ခုကို ပဌန်ပေသသည်။ ကကိစ္စတလင်၊ array သည်ကကဲ့သို့ဖဌစ်လိမ့်မည်။

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

ကနည်သဖဌင့် ကျလန်ုပ်တို့သည် အစုလိုက် အကလက်လိုက်လုပ်စရာမလိုဘဲ အရာဝတ္ထု၏ ဂုဏ်သတ္တိမျာသကို ရရဟိနိုင်သည်။ ပဌဿနာတစ်ခုတလင်၊ စာကဌောင်သနဟစ်ခုစလုံသတလင် တူညီသောစာလုံသအရေအတလက်ရဟိမရဟိ စစ်ဆေသရန် ကနည်သလမ်သကို .length ပိုင်ဆိုင်မဟုဖဌင့် သင်အသုံသပဌုနိုင်သည် - ၎င်သသည် anagrams ၏ အရေသကဌီသသောအင်္ဂါရပ်တစ်ခုဖဌစ်သည်။

သရမျာသကို ရဟာဖလေပါ။

အင်တာဗျူသတလေမဟာ ပေါ်လာတတ်တဲ့ ရိုသရဟင်သတဲ့ အလုပ်တစ်ခုပါ။

ဇာတ်စင်

အငဌင်သအခုံအဖဌစ် string တစ်ခုယူသော လုပ်ဆောင်ချက်တစ်ခုကို ရေသသာသပဌီသ string တလင်ပါရဟိသော သရအရေအတလက်ကို ပဌန်ပေသရန်လိုအပ်သည်။
သရဟူသည် “က”၊“င”၊“ငါ”၊“အို”၊“ယူ”။

ဥပမာ:

findVowels('hello') //—> ၂
findVowels('why') // —> 0

ဆုံသဖဌတ်ချက်

ကသည်မဟာ အရိုသရဟင်သဆုံသ ရလေသချယ်မဟုဖဌစ်သည်-

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
}

.includes() method ကိုအသုံသပဌုခဌင်သကို ဂရုပဌုရန် အရေသကဌီသပါသည်။ ၎င်သကို strings နဟင့် array နဟစ်ခုလုံသအတလက် ရနိုင်သည်။ array တစ်ခုတလင် အချို့သောတန်ဖိုသမျာသပါရဟိမရဟိ ဆုံသဖဌတ်ရန် ၎င်သကိုအသုံသပဌုသင့်သည်။ array တလင် သတ်မဟတ်ထာသသောတန်ဖိုသမျာသပါဝင်နေပါက ကနည်သလမ်သသည် အမဟန်အတိုင်သပဌန်ဖဌစ်မည်ဖဌစ်ပဌီသ၊ မဟုတ်ပါက false ပဌန်လာမည်ဖဌစ်သည်။

ပဌဿနာအတလက် တိုတောင်သသော အဖဌေတစ်ခု ရဟိပါသည်။

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

၎င်သသည် .match() နည်သလမ်သကို အသုံသပဌုပဌီသ ထိရောက်သော ရဟာဖလေမဟုကို အကောင်အထည်ဖော်ရန် ခလင့်ပဌုသည်။ သတ်မဟတ်ထာသသော စာကဌောင်သအတလင်သ နည်သလမ်သတစ်ခုအနေဖဌင့် ပုံမဟန်ဖော်ပဌချက်ကို တလေ့ရဟိပါက၊ ပဌန်ပေသသည့်တန်ဖိုသသည် ကိုက်ညီသော ဇာတ်ကောင်မျာသ၏ အခင်သအကျင်သတစ်ခုဖဌစ်သည်။ ကိုက်ညီမဟုမရဟိပါက၊ .match() သည် null ဖဌစ်သလာသသည်။

ဖီဘိုနာချီ

အဆင့်အမျိုသမျိုသရဟိ အင်တာဗျူသမျာသတလင် တလေ့နိုင်သော ဂန္တဝင်အလုပ်တစ်ခု။ Fibonacci sequence သည် နောက်ဆက်တလဲတစ်ခုစီသည် ယခင်နဟစ်ခု၏ပေါင်သလဒ်ဖဌစ်ပဌီသ နောက်ဆက်တလဲတစ်ခုစီသည် ကိန်သဂဏန်သမျာသအတလဲလိုက်ဖဌစ်ကဌောင်သ မဟတ်သာသထိုက်သည်။ ဒီတော့ ပထမဂဏန်သဆယ်လုံသက ဒီအတိုင်သကဌည့်ပါ- 0၊ 1၊ 1၊ 2၊ 3၊ 5၊ 8၊ 13၊ 21၊ 34။

ဇာတ်စင်

n သည် function အတလက် argument အဖဌစ်ဖဌတ်သန်သသော နံပါတ်ဖဌင့် အချို့သော sequence တလင် nth record ကိုပဌန်ပေသသည့် function ကိုရေသရန်လိုအပ်သည်။

fibonacci(3) //—> ၂

ကတာဝန်သည် အငဌင်သအခုံတလင် သတ်မဟတ်ထာသသည့် အကဌိမ်အရေအတလက်ကို အကလက်ဖဌတ်၍ သင့်လျော်သောအနေအထာသတလင် တန်ဖိုသကို ပဌန်ပေသခဌင်သဖဌစ်သည်။ ပဌဿနာကို ပုံဖော်ရာတလင် ကနည်သသည် ကလင်သပတ်မျာသ အသုံသပဌုရန် လိုအပ်သည်။ ၎င်သအစာသ ပဌန်ယူခဌင်သကို သင်အသုံသပဌုပါက၊ ၎င်သသည် တလေ့ဆုံမေသမဌန်သသူအာသ ကျေနပ်စေပဌီသ သင့်အာသ အမဟတ်အနည်သငယ်ပေသနိုင်သည်။

ဆုံသဖဌတ်ချက်

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

ရလဒ်အခင်သအကျင်သတလင်၊ ပထမနံပါတ်နဟစ်ခုကို အစီအစဥ်တလင် ထည့်သလင်သထာသသောကဌောင့် အတလဲလိုက်ပါဝင်မဟုတစ်ခုစီသည် ယခင်နံပါတ်နဟစ်ခု၏ပေါင်သလဒ်ဖဌစ်သောကဌောင့် ဖဌစ်သည်။ အစပိုင်သတလင် နောက်နံပါတ်ကိုရယူရန် နံပါတ်နဟစ်ခုကို မယူနိုင်သောကဌောင့် loop သည် ၎င်သတို့ကို အလိုအလျောက်ထုတ်ပေသနိုင်မည်မဟုတ်ပါ။ သို့သော် ကျလန်ုပ်တို့သိသည့်အတိုင်သ၊ ပထမနံပါတ်နဟစ်ခုသည် အမဌဲတမ်သ 0 နဟင့် 1 ဖဌစ်သည်။ ထို့ကဌောင့်၊ သင်သည် ရလဒ်မျာသ ခင်သကျင်သမဟုကို ကိုယ်တိုင်စတင်နိုင်သည်။

ပဌန်ယူခဌင်သအတလက်၊ အရာအာသလုံသသည် တစ်ချိန်တည်သတလင် ပိုမိုရိုသရဟင်သပဌီသ ပိုမိုရဟုပ်ထလေသသည်-

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

ကျလန်ုပ်တို့သည် အငဌင်သအခုံမျာသအဖဌစ် သေသငယ်သောနံပါတ်မျာသကို ဖဌတ်၍ fibonacci() ကို ဆက်လက်ခေါ်ဆိုပါသည်။ ဖဌတ်သလာသသော အငဌင်သအခုံသည် 0 သို့မဟုတ် 1 ဖဌစ်သောအခါ ကျလန်ုပ်တို့ ရပ်တန့်သလာသသည်။

ကောက်ချက်

ဖဌစ်နိုင်ချေမျာသသည်မဟာ၊ သင်သည် frontend သို့မဟုတ် JavaScript developer အလုပ် (အထူသသဖဌင့် အငယ်တန်သအဆင့်တလင်ရဟိလျဟင်) အင်တာဗျူသခံရပါက ကအလုပ်မျာသထဲမဟ တစ်ခုခုကို သင်ကဌုံတလေ့ဖူသပဌီသဖဌစ်သည်။ သို့သော် ၎င်သတို့ကို သင်မတလေ့မိပါက၊ ၎င်သတို့သည် အနာဂတ်တလင် အသုံသဝင်နိုင်သည် - အနည်သဆုံသ အထလေထလေ ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက်။

Skillbox မဟ အကဌံပဌုထာသသည်-

  • အသုံသချ အလန်လိုင်သသင်တန်သ "Python Data Analyst".
  • အလန်လိုင်သသင်တန်သ "Profession Frontend Developer".
  • လက်တလေ့ တစ်နဟစ်သင်တန်သ "PHP developer 0 မဟ PRO".

source: www.habr.com

DDoS ကာကလယ်ရေသ၊ VPS VDS ဆာဗာမျာသပါသည့် ဆိုက်မျာသအတလက် ယုံကဌည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကလယ်မဟု၊ VPS VDS ဆာဗာမျာသပါရဟိသော ယုံကဌည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster