javascript - 使用 splice 方法添加元素

标签 javascript arrays string addition splice

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

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');

最佳答案

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

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');

关于javascript - 使用 splice 方法添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018418/

相关文章:

javascript - 我想在android中的TextView上显示html文件的内容(带格式)

javascript - 如何编写正确的字符串来使用 JSON.parse

java - 每行分割未知数量的字符串

string - 如何在 Julia 中使用字符串命名数据框中的列?

Ruby:字符串与字符串的比较失败(ArgumentError)

javascript - 当用户遍历 map 时,如何根据当前 map Canvas 绘制标记

javascript - 在 PHP 的 json_encode() 中包含 JavaScript

c# - 为什么用内联初始化创建数组这么慢?

javascript - 如何使用 Array.filter 而不是传统的循环 O(n^2)?

javascript - 下面代码中的零指代什么