我正在尝试使用 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/