【2023 挑战赛 Day7】 #JS 字符 loop

闲聊时间

铁人赛到第 7 天了!当初参赛的初衷是希望能好好面对让我恐惧的 JS 面试考题,不过现在準备去新公司报到了,也想学一些测试或资安相关的东西,后面几篇也许会安排我在新领域的学习心得。加油!我可以撑完 30 天的!只剩 23 天了 XD

开头先跟大家闲聊,昨天在上踢拳击课时,教练安排训练左右手脚的协调性。因为踢拳不只可以用手,也很依赖脚的攻击。有时上课要做连踢 10 次或做一连串 combo 组合动作时,我常埋怨自己反应太慢或协调性太差,很羡慕其他学姊长都可以做得很顺畅又有力。

教练说:「很多人会说自己协调性不好,当你一直去找它,它也会来找你,只要继续找下去,总有一天你们就会找到彼此了。」

教练的一番话很哲学吧?相信学习新事物的过程都是类似的。

http://img2.58codes.com/2024/20163153gtHOCTxKvD.jpg

我的第一副拳击手套,在转职的过程中拳击给我很多陪伴,希望今年我也能考过拳馆安排的进阶学员考试,不仅工作有所成长,运动能力也一起提升!

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)

今天的文章就到这边,诚实地说,我都是一边查资料一边做题的。

面试时就算被允许上网查资料,我都会紧张到很难找到正确的答案,希望自己对于相关工具跟方法的处理会更熟悉一些,之后在解题上就可以更顺利一点。

那么我们明天见~


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章