闲聊时间
铁人赛到第 7 天了!当初参赛的初衷是希望能好好面对让我恐惧的 JS 面试考题,不过现在準备去新公司报到了,也想学一些测试或资安相关的东西,后面几篇也许会安排我在新领域的学习心得。加油!我可以撑完 30 天的!只剩 23 天了 XD
开头先跟大家闲聊,昨天在上踢拳击课时,教练安排训练左右手脚的协调性。因为踢拳不只可以用手,也很依赖脚的攻击。有时上课要做连踢 10 次或做一连串 combo 组合动作时,我常埋怨自己反应太慢或协调性太差,很羡慕其他学姊长都可以做得很顺畅又有力。
教练说:「很多人会说自己协调性不好,当你一直去找它,它也会来找你,只要继续找下去,总有一天你们就会找到彼此了。」
教练的一番话很哲学吧?相信学习新事物的过程都是类似的。
我的第一副拳击手套,在转职的过程中拳击给我很多陪伴,希望今年我也能考过拳馆安排的进阶学员考试,不仅工作有所成长,运动能力也一起提升!
JS:康威的看说序列
题目描述:
请写出一个 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)) // 2123console.log(lookSay(55555666666)) // 5566
在这题我们除了用到昨天学到的 str.charAt() 方法来提取字串内的字符之外,也使用 parseInt() 来把字串转回数字。
JS 方法:
parseInt()
能将输入的字串转成整数,且忽略掉 0 与空格。例如:
console.log(parseInt(' 123 '));// 123 (whitespace is ignored)console.log(parseInt('077'));// 77 (leading zeros are ignored)
今天的文章就到这边,诚实地说,我都是一边查资料一边做题的。
面试时就算被允许上网查资料,我都会紧张到很难找到正确的答案,希望自己对于相关工具跟方法的处理会更熟悉一些,之后在解题上就可以更顺利一点。
那么我们明天见~