使用拼接方法添加元素

问题描述 投票:0回答:2

我正在尝试向我们使用javascript拼接方法,在数组中的每个大写字母后面添加一个“-”,但是它不起作用。我不知道我在做什么错。这是下面的代码。

function spinalCase(str) {
  let strArr = [];
  for(let i = 0; i < str.length; i++){
    strArr.push(str[i]);
  }
  for(let i = 0; i < strArr.length; i++){
    if(strArr[i] !== strArr[i].toLowerCase()){
      strArr.splice(strArr.indexOf(strArr[i]),0, "-");
    }
  } 
console.log(strArr);
}

spinalCase('thisIsSpinalTap');
javascript arrays string add splice
2个回答
0
投票

[使用splice添加新元素时,您正在增加数组的length,并且循环永远无法完成。如果您从数组的末尾到开头进行循环,则可以避免此问题。

function spinalCase(str) {
  let strArr = [];
  for (let i = 0; i < str.length; i++) {
    strArr.push(str[i]);
  }

  // Work the loop from the end to the beginning
  for (let i = strArr.length - 1; i >= 0 ; i--) {
    if (strArr[i] !== strArr[i].toLowerCase()) {
      strArr.splice(strArr.indexOf(strArr[i]), 0, "-");
    }
  }
  console.log(strArr.join(''));
}

spinalCase('thisIsSpinalTap');

0
投票

您在执行操作时更改了数组:

strArr.splice(strArr.indexOf(strArr[i]),0, "-");

因此strArr.length对于循环for(let i = 0; i < strArr.length; i++)而言不是恒定的>

© www.soinside.com 2019 - 2024. All rights reserved.