鐵人賽到第 7 天了!當初參賽的初衷是希望能好好面對讓我恐懼的 JS 面試考題,不過現在準備去新公司報到了,也想學一些測試或資安相關的東西,後面幾篇也許會安排我在新領域的學習心得。加油!我可以撐完 30 天的!只剩 23 天了 XD
開頭先跟大家閒聊,昨天在上踢拳擊課時,教練安排訓練左右手腳的協調性。因為踢拳不只可以用手,也很依賴腳的攻擊。有時上課要做連踢 10 次或做一連串 combo 組合動作時,我常埋怨自己反應太慢或協調性太差,很羨慕其他學姊長都可以做得很順暢又有力。
教練說:「很多人會說自己協調性不好,當你一直去找它,它也會來找你,只要繼續找下去,總有一天你們就會找到彼此了。」
教練的一番話很哲學吧?相信學習新事物的過程都是類似的。
我的第一副拳擊手套,在轉職的過程中拳擊給我很多陪伴,希望今年我也能考過拳館安排的進階學員考試,不僅工作有所成長,運動能力也一起提升!
請寫出一個 lookSay()函數,函數接受整數的數字做為參數,該函數返回的結果跟數學家康威的「看說序列」有關係,鮮寫出數字的數量、再寫出數字本身,且是連續的組合在一起。
例如
當參數為 1 ,可以稱為一個 1,於是輸出為 11
當參數為 12,可以稱為一個 1、一個 2,於是輸出為 1112
當參數為 112,可以稱為兩個1、一個2,於是輸出為 2112
function lookSay(number){
const numString = number.toString() // 將 input 數字轉為字串
const stringLastIndex = numString.length // 以字串長度作為 for loop 檢查的迴圈數
let repeated = 1 ; // 宣告數字的重複值,至少為 1
let result = '' // 宣告最後輸出的字串
for(let i = 0; i<stringLastIndex; i++){
if(numString.charAt(i) === numString.charAt(i+1)){
// 計算重複的數字,直到下一個位置的字符不同,就進入 else,把目前的字符串在一起
repeated ++
}else{
// 在迴圈檢查至最後一個字符之前,先把前面字符計算重複的結果串在一起
result = result + `${repeated}`+ `${numString.charAt(i)}`
repeated = 1 // 將重複值重置為 1
}
}
//將字符轉成數字
return parseInt(result)
}
console.log(lookSay(1133)) // 2123
console.log(lookSay(55555666666)) // 5566
在這題我們除了用到昨天學到的 str.charAt() 方法來提取字串內的字符之外,也使用 parseInt() 來把字串轉回數字。
parseInt()
能將輸入的字串轉成整數,且忽略掉 0 與空格。例如:
console.log(parseInt(' 123 '));
// 123 (whitespace is ignored)
console.log(parseInt('077'));
// 77 (leading zeros are ignored)
今天的文章就到這邊,誠實地說,我都是一邊查資料一邊做題的。
面試時就算被允許上網查資料,我都會緊張到很難找到正確的答案,希望自己對於相關工具跟方法的處理會更熟悉一些,之後在解題上就可以更順利一點。
那麼我們明天見~