JavaScript驼峰转空格分隔小写字符串功能代码异常排查
代码问题原因分析
- 核心错误根源:你循环判断时用的是原输入字符串
txt的下标,但插入空格的操作是在新数组arr上执行的。每次往arr中插入1个空格后,arr里插入位置之后的所有字符下标都会比原txt对应字符的下标多1,插入的空格越多,下标偏移量越大。当你要处理第二个及之后的大写字母时,直接用原字符串的下标往arr里插空格,位置就会错位,自然就会出现空格插错位置的异常结果。 - 冗余代码问题:
arr.join('')执行后返回的本身就是字符串类型,后续的toString()属于多余调用,不过这个问题不影响运行结果,仅属于代码冗余。
对应你提供的错误示例可以直观验证:
输入iLikeSwimming时,原字符串中第二个大写字母S在原txt里的下标是5,由于之前已经在arr的下标1位置插入过1个空格,此时S在arr里的实际下标已经变成了6,你还是往arr的下标5位置插入空格,就会把空格插到原本的字符e前面,最终就输出了错误的i lik eswimming结果。
而输入只有1个大写字母的helloWorld时,只需要插入1次空格,不会出现下标偏移累积的问题,所以运行结果正常。
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

