تاسو اړتیا لرئ مخکې له دې چې تاسو یې د حل کولو پیل پیل کړئ ستونزه درک کړئ. په ځینو مواردو کې، تاسو ممکن یو کار په سطحي توګه درک کړئ او بیا په غلطه لاره لاړ شئ. دا ممکن د مرکه کونکي څخه یو څو روښانه پوښتنې وپوښتل شي.
تاسو اړتیا لرئ د لاس په واسطه د لیکلو کوډ تمرین کړئ، نه په کمپیوټر کې. داسې پیښیږي چې د مرکې په جریان کې غوښتونکي ته مارکر او سپینه تخته ورکړل شي ، چیرې چې هیڅ اشاره یا اتوماتیک فارمیټ شتون نلري. کله چې د حل په لټه کې یاست، نو دا ارزښت لري چې خپل کوډ د کاغذ په یوه ټوټه یا مستقیم تخته کې ولیکئ. که تاسو هرڅه په خپل سر کې وساتئ، تاسو ممکن یو مهم هیر کړئ.
په جاواسکریپټ کې د ټیمپلیټ دندې
د دې کارونو څخه ځینې شاید تاسو ته دمخه پیژندل شوي وي. تاسو یا هم مرکې درلودې چیرې چې تاسو باید ورته یو څه حل کړئ ، یا د جاوا سکریپټ زده کولو پرمهال په دوی باندې تمرین وکړئ. ښه، اوس دا وخت دی چې دوی بیا حل کړئ، او د پروسې تفصيلي توضیح سره.
پالینډروم
پالینډروم یوه کلمه، جمله یا د حروفونو ترتیب دی چې په عادي او مخالف لوري کې په ورته ډول لوستل کیږي. د مثال په توګه، "انا" یو پالینډروم دی، مګر "میز" او "جان" ندي.
سټینګ کول
یو تار ورکول؛ تاسو اړتیا لرئ یو فنکشن ولیکئ چې تاسو ته اجازه درکوي ریښتیا بیرته راشئ که چیرې تار یو پالینډروم وي ، او که غلط وي. په دې حالت کې، تاسو اړتیا لرئ چې په حساب کې ځایونه او د ټکي نښه نښه کړئ.
دلته اصلي مفکوره د تار بیرته راګرځول دي. که "ریورس" تار په بشپړ ډول اصلي سره ورته وي، نو موږ یو پالینډروم ترلاسه کړی او فعالیت باید ریښتیا راشي. که نه، دروغ.
پریکړه
دلته هغه کوډ دی چې د پالینډروم حل کوي.
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('')
}
لومړی ګام دا دی چې د ان پټ سټینګ کې حروف په کوچني کې بدل کړئ. دا یو تضمین دی چې برنامه به پخپله کرکټرونه پرتله کړي ، نه قضیه یا بل څه.
دوهم ګام د کرښې بیرته راګرځول دي. دا کار کول ستونزمن نه دي: تاسو اړتیا لرئ دا د .split() میتود (String کتابتون) په کارولو سره په صف کې بدل کړئ. بیا موږ د .reverse() (Array کتابتون) په کارولو سره سرې بیرته راګرځوو. وروستی ګام دا دی چې د .join() (Array کتابتون) په کارولو سره ریورس سري په تار کې بدل کړئ.
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)
}
}
}
موږ ټول غیر کرکټرونه د پرتله کولو څخه لرې کوو. د کار کولو لپاره غوره منظم څرګندونې.
پریکړه
// 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() په پورته برخه کې. دا طریقه یو صف بیرته راګرځوي چې نومونه یا کیلي لري په ورته ترتیب کې چې دوی په اعتراض کې ښکاري. په دې حالت کې سریزه به داسې وي:
دا مهمه ده چې د .includes() میتود کارولو ته پاملرنه وکړئ. دا د دواړو تارونو او صفونو لپاره شتون لري. دا باید د دې معلومولو لپاره وکارول شي چې ایا یو سري یو ټاکلی ارزښت لري. دا طریقه ریښتیا راګرځي که چیرې سرې ټاکل شوي ارزښت ولري، او غلط که دا نه وي.
تاسو اړتیا لرئ یو فنکشن ولیکئ چې په یو ځانګړي ترتیب کې nth ریکارډ بیرته راولي، د n هغه شمیره ده چې فنکشن ته د دلیل په توګه لیږدول کیږي.
fibonacci(3) // —> 2
پدې کار کې د لوپ له لارې تګ کول شامل دي په دلیل کې ټاکل شوي څو ځله ، په مناسب موقعیت کې ارزښت بیرته راګرځول. د ستونزې د وړاندې کولو دا طریقه د لوپونو کارولو ته اړتیا لري. که تاسو د دې پرځای تکرار کاروئ، دا ممکن مرکه کوونکی خوښ کړي او تاسو ته یو څو اضافي ټکي درکړي.
پریکړه
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]
}
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)
}
موږ فیبوناکي () ته زنګ وهو، د دلیلونو په توګه کوچنۍ او کوچنۍ شمیرې تیریږي. موږ ودروو کله چې منظور شوی دلیل 0 یا 1 وي.
پایلې
ډیری احتمال، تاسو دمخه د دې دندو سره مخ شوي یاست که چیرې تاسو د فرنټ انډ یا جاواسکریپټ پراختیا کونکي دندې لپاره مرکه کړې وي (په ځانګړي توګه که دا په ځوانه کچه وي). مګر که تاسو دوی ته نه یاست راغلی، دوی ممکن په راتلونکي کې ګټور وي - لږترلږه د عمومي پراختیا لپاره.