Javascript 单独的camelCase字符串

Javascript 单独的camelCase字符串,javascript,function,array-splice,Javascript,Function,Array Splice,我的函数应该将一个驼峰大小写的字符串(例如,“camelCase”分为“camelCase”)。我的逻辑基本上是将字符串拆分成一个数组,识别大写字符,然后在大写字符之前拼接一个空格字符。返回一个连接的数组。我可以想出一个不同的解决方案,但我更想知道为什么我的函数没有返回任何东西 我的职能: function solution(str) { let splitStr = str.split(""); for(let i=0; i<splitStr.length;

我的函数应该将一个驼峰大小写的字符串(例如,“camelCase”分为“camelCase”)。我的逻辑基本上是将字符串拆分成一个数组,识别大写字符,然后在大写字符之前拼接一个空格字符。返回一个连接的数组。我可以想出一个不同的解决方案,但我更想知道为什么我的函数没有返回任何东西

我的职能:

function solution(str) {
  let splitStr = str.split("");
  for(let i=0; i<splitStr.length; i++){
   if(splitStr[i]===splitStr[i].toUpperCase()){
     splitStr.splice(i, 0, " ");
   }
  }
  return splitStr.join("");
}
函数解决方案(str){
设splitStr=str.split(“”);

对于(设i=0;i首先,我建议使用正则表达式

由于您要求对问题进行解释,因此在随后的循环中插入空格并进行比较时,您创建了一个无限循环。引擎在无限循环中被捕获,因此没有输出。根据经验,您应该避免在可变构造上循环并修改它

以下是基于您的代码的有效解决方案:

函数解决方案(str){
const splitStr=str.split(“”);
让结果=[];

对于(设i=0;i这里有一个解决方案,您的代码进入了一个无限循环,因此您当然不会得到任何回报

函数解决方案(str){
设splitStr=str.split(“”);
for(设i=0;i

Regex可能是一种“更好”的方法,但会增加一些开销。

也许您希望检查控制台并尝试获取错误消息,至少有助于了解问题所在。您的函数似乎还可以。尝试注释for循环,看看它是否返回任何内容尝试改用Regex。创建一个无限循环,因为
“”==“”.toUpperCase()
为真。在for循环中使用
splice()
不是一个好主意。如果这样做的话,最好向后工作,以免与索引冲突